指定函數的空dict或列表的正確方法是什麼?指定默認空列表/ dict/set/etc作爲函數的正確方法arg
def func_a(l=list(), d=dict()):
pass
def func_b(l=[], d={}):
pass
指定函數的空dict或列表的正確方法是什麼?指定默認空列表/ dict/set/etc作爲函數的正確方法arg
def func_a(l=list(), d=dict()):
pass
def func_b(l=[], d={}):
pass
那些要麼是好的,如果你不打算變異的輸入參數...
但是,如果你在變異列表或函數內部的字典計劃,你不「不想爲使用的是您提供的形式...你想要做更多的東西是這樣的:
def func(l=None, d=None):
if l is None:
l = list() #or l = []
if d is None:
d = dict() #or d = {}
注意[]
和{}
會導致輕微更快的執行速度。如果這是一個非常緊密的循環,我會使用它。
也沒有。在函數定義時,Python中的默認參數被評估一次。正確的方法是使用None
和功能檢查它:
def func(l=None):
if l is None:
l = []
...
見的討論in this SO question。
+1。 – BenDundee
題外話:你不應該使用可變值作爲默認參數值。 –