首页 > 关于函数传值问题def f(a,L=[ ])

关于函数传值问题def f(a,L=[ ])

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 默认值是指向一个列表对象,程序开始的时候这个列表对象是空。而不是每次调用函数的时候新建一个空列表。

【热门文章】
【热门文章】