def f(a,L=[]):
L.append(a)
return L
print f(1)
print f(2)
print f(3)
会输出:
[1]
[1, 2]
[1, 2, 3]
为什么会累积?
这段代码等效于:
lst = []
def f(a,L=lst):
L.append(a)
return L
print f(1)
print f(2)
print f(3)
也就是说,L
默认值是指向一个列表对象,程序开始的时候这个列表对象是空。而不是每次调用函数的时候新建一个空列表。