为什么函数参数默认值(空列表)是静态的?

时间:2016-05-28 12:58:06

标签: python

代码:

def func(a=[]):
    a.append(1)
    print(a)

func()
func()
func()

输出:

[1]
[1, 1]
[1, 1, 1]

我认为每次调用func时都会重新分配默认值列表,答案是:

[1]
[1]
[1]

1 个答案:

答案 0 :(得分:1)

你说你“认为默认值,列表,每次调用func时都会被重新分配。”你错了。如果您正在学习Python,那么您应该在某些时候完成the official tutorial。这是what it says about default arguments

  

默认值仅评估一次。这有所不同   默认值是可变对象,例如列表,字典或   大多数课程的实例。

阅读教程了解详情。