Weird default argument behavior
本问题已经有最佳答案,请猛点这里访问。
我有一个函数,
1 | def add_hi(ls=[]): ls.insert(0, 'hi,') |
这适用于普通列表,但是如果我在没有任何参数的情况下调用函数两次,我会得到
这是一个常见的python错误(参见常见错误1)。函数参数的默认值在定义函数时只计算一次。因此,函数将停止在定义后将空列表作为默认参数。
上面链接的网站建议这样的函数结构来处理错误:
1 2 3 4 5 | >>> def foo(bar=None): ... if bar is None: # or if not bar: ... bar = [] ... bar.append("baz") ... return bar |