为什么空字典在Python中是一个危险的默认值?

这个问题在这里已经有了答案:

  • “最小的惊讶”和可变的默认参数30的答案
  • Python方法:评估默认参数值一次3个答案

  • 只有当你的函数修改参数时才是危险的。 如果您修改了默认参数,它将一直持续到下一次调用,因此您的“空白”字典将开始包含第一个调用以外的值。

    是的,在这种情况下使用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}
    
    链接地址: http://www.djcxy.com/p/28517.html

    上一篇: Why is the empty dictionary a dangerous default value in Python?

    下一篇: Python constructor and default value