2013-06-24 18 views

回答

7

那些要麼是好的,如果你不打算變異的輸入參數...

但是,如果你在變異列表或函數內部的字典計劃,你不「不想爲使用的是您提供的形式...你想要做更多的東西是這樣的:

def func(l=None, d=None): 
    if l is None: 
     l = list() #or l = [] 
    if d is None: 
     d = dict() #or d = {} 

注意[]{}會導致輕微更快的執行速度。如果這是一個非常緊密的循環,我會使用它。

+0

謝謝 - 希望這是一個錯誤,我不會再做:) – BenDundee

+1

我是OT,但我想指出一個鏈接,我昨天看到[] VS列表()和{} VS字典(): http://stackoverflow.com/questions/2972212/creating-an-empty-list-in-python – Paolo

+0

@Guandalino - 感謝您的鏈接。除非它處於一個非常緊密的循環中,否則額外的函數調用可能會很明顯,我沒有任何方法來構建list/dict。但通常情況並非如此。 FWIW,在我的代碼中,我認爲我通常使用文字而不是空函數調用。 – mgilson

3

也沒有。在函數定義時,Python中的默認參數被評估一次。正確的方法是使用None和功能檢查它:

def func(l=None): 
    if l is None: 
     l = [] 
    ... 

見的討論in this SO question

+0

+1。 – BenDundee

相關問題