下面的两段代码产生不同的输出。
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”?谢谢。