我把dict作为Python函数的可选参数的默认值,pylint(使用Sublime包)告诉我这是危险的。有人能解释一下为什么会这样吗?使用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}
其他回答
让我们来看一个例子:
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}
只有当你的函数要修改实参时,才会有危险。如果修改了默认参数,它将持续到下一次调用,因此“空”字典将开始包含第一次调用以外的其他调用的值。
是的,在这种情况下,使用None既安全又常规。
推荐文章
- 把if-elif-else语句放在一行中?
- 我如何结合两个数据框架?
- 如何计数列表中唯一值的出现
- 为什么Pycharm的检查人员抱怨“d ={}”?
- 如何JSON序列化集?
- 在python中,年龄从出生日期开始
- 使用pip安装SciPy
- 在Python中,我应该如何测试变量是否为None, True或False
- 如何在Python中从毫秒创建datetime ?
- 如何解窝(爆炸)在一个熊猫数据帧列,成多行
- 如何使用pip安装opencv ?
- 在pip冻结命令的输出中“pkg-resources==0.0.0”是什么
- 格式y轴为百分比
- 熊猫连接问题:列重叠但没有指定后缀
- 为什么空字典在Python中是一个危险的默认值?