keywodarguments存储在哪里def测试(t =[]):



假设我有这样一个函数:

def test(t=[]):
t.append(1)
print(t)

如果我运行它几次,列表将像这样添加:

test() #[1]
test() #[1, 1]

那么这个列表存储在哪里?如果不在globals()//locals()中,则__dict__函数也为空

找到了:

储存在__defaults__

这里你甚至可以将它设置为另一个元组

这是因为python解释器/编译器在编译时将默认值赋给参数。

这就是为什么默认参数应该是不可变的。

def test(t=None):
if t is None:
t = []
t.append(1)
print(t)

最新更新