关于函数传值问题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]
为什么会累积?

阅读 4.1k
1 个回答

这段代码等效于:

lst = []
def f(a,L=lst):
    L.append(a)
    return L
print f(1)
print f(2)
print f(3)

也就是说,L 默认值是指向一个列表对象,程序开始的时候这个列表对象是空。而不是每次调用函数的时候新建一个空列表。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题