我把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}
推荐文章
- 在pip冻结命令的输出中“pkg-resources==0.0.0”是什么
- 格式y轴为百分比
- 熊猫连接问题:列重叠但没有指定后缀
- 为什么空字典在Python中是一个危险的默认值?
- 在Python中,冒号等于(:=)是什么意思?
- Maven命令行如何指向特定的settings.xml为单个命令?
- Python "SyntaxError:文件中的非ascii字符'\xe2' "
- 如何从psycopg2游标获得列名列表?
- Python中dict对象的联合
- 如何有效地比较两个无序列表(不是集合)?
- 如何在交互式Python中查看整个命令历史?
- 如何显示有两个小数点后的浮点数?
- 如何用OpenCV2.0和Python2.6调整图像大小
- 在每个列表元素上调用int()函数?
- 当使用代码存储库时,如何引用资源的相对路径