我将dict作为Python函数可选参数的默认值,而pylint(使用Sublime包)告诉我,这很危险。有人可以解释为什么会这样吗?并且是使用None
的更好替代方法吗?
仅当您的函数将修改参数时,这才是危险的。如果您修改默认参数,它将保留到下一次调用,因此您的“空”字典将开始包含除第一个调用以外的其他调用的值。
是,在这种情况下,使用None
是安全和常规的。
让我们看一个例子:
def f(value, key, hash={}):
hash[value] = key
return hash
print f('a', 1)
print f('b', 2)
您可能希望输出:
{'a': 1}
{'b': 2}
但实际上输出:
{'a': 1}
{'a': 1, 'b': 2}