0

下面的两段代码产生不同的输出。

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”?谢谢。

4

0 回答 0