What are the implications of using mutable types as default arguments in Python?
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicates:
Why the “mutable default argument fix” syntax is so ugly, asks python newbie
least astonishment in python: the mutable default argument
下面是一个例子。
1 2 | def list_as_default(arg = []): pass |
从http:/ / / / / defaultargumentvalues.html pytut www.network-theory.co.uk文档
默认值是只读一次评价。这使差分时,默认是一个对象,如一mutable列表、字典,类实例或酒。例如,下面的函数传递的参数accumulates在随后的调用:
1 2 3 4 5 6 7 | def f(a, L=[]): L.append(a) return L print f(1) print f(2) print f(3) |
这将打印
1 2 3 | [1] [1, 2] [1, 2, 3] |
如果你不想默认的后续调用之间的共享,你可以写这样的额外功能:
1 2 3 4 5 | def f(a, L=None): if L is None: L = [] L.append(a) return L |