为函数指定空字典或列表的正确方法是什么?
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 = {}
请注意,[]
and{}
将导致执行速度稍快。如果这是一个非常紧密的循环,我会使用它。
两者都不。Python 中的默认参数在函数定义时计算一次。正确的方法是None
在函数中使用并检查它:
def func(l=None):
if l is None:
l = []
...
请参阅此 SO question 中的讨论。