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

Python 为什么函数参数的默认值(空列表)是静态的?,python,Python,代码: 输出: def func(a=[]): a.append(1) print(a) func() func() func() 我以为每次调用func时都会重新分配默认值列表,答案是: [1] [1, 1] [1, 1, 1] 您说您“认为每次调用func时都会重新分配默认值列表。”您认为错误。如果您正在学习Python,您应该在某个时候完成。这是: 默认值仅计算一次。这会使情况有所不同 默认为可变对象,如列表、字典或 大多数类的实例 有关详细信息,请阅读本教程。对此已

代码:

输出:

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

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

[1]
[1, 1]
[1, 1, 1]
您说您“认为每次调用func时都会重新分配默认值列表。”您认为错误。如果您正在学习Python,您应该在某个时候完成。这是:

默认值仅计算一次。这会使情况有所不同 默认为可变对象,如列表、字典或 大多数类的实例


有关详细信息,请阅读本教程。

对此已经进行了大量讨论
[1]
[1]
[1]