下面的两段代码产生不同的输出。
def f1(x= []):
x.append(1)
return x
print(f1())
print(f1())
输出是:
[1]
[1, 1]
对于第二个功能:
def f2(x=0):
x+=1
return x
print(f2())
print(f2())
输出是:
1
1
现在我知道这是因为“1”是 int 类型并且是不可变的(就像我使用元组一样)。我试图理解的是这个逻辑是如何工作的。在这两个函数的开头,您位于各自函数的命名空间中,并且 x 有一个分配给它的对象。为什么只有在第二种情况下才被重新分配为“0”?谢谢。