tsc*_*zle 76 python pylint optional-parameters optional-arguments
我把空括号作为Python函数的可选参数的默认值,而pylint(使用Sublime包)告诉我这很危险.有人可以解释为什么会这样吗?而使用None是更好的选择吗?
Bil*_*nch 109
我们来看一个例子:
def f(value, key, hash={}):
hash[value] = key
return hash
print f('a', 1)
print f('b', 2)
Run Code Online (Sandbox Code Playgroud)
您可能希望输出的内容:
{'a': 1}
{'b': 2}
Run Code Online (Sandbox Code Playgroud)
但实际输出:
{'a': 1}
{'a': 1, 'b': 2}
Run Code Online (Sandbox Code Playgroud)
Joh*_*nck 90
只有当你的函数修改参数时才有危险.如果修改默认参数,它将一直持续到下一次调用,因此你的"空"字典将开始包含除第一个之外的调用的值.
是的,None在这种情况下,使用既安全又传统.
| 归档时间: |
|
| 查看次数: |
28611 次 |
| 最近记录: |