一尘不染

Python参考

python

有人可以解释为什么整数示例导致x和y的值不同,而列表示例导致x和y是同一对象的原因吗?

    x = 42
    y = x
    x = x + 1
    print x # 43
    print y # 42

    x = [ 1, 2, 3 ]
    y = x
    x[0] = 4
    print x # [4, 2, 3]
    print y # [4, 2, 3]
    x is y # True

阅读 146

收藏
2020-12-20

共1个答案

一尘不染

因为整数是不可变的,而list是可变的。您可以从语法中看到。在x = x + 1你实际上是分配一个新值x(管它是在LHS)。在中x[0] = 4,您要在列表上调用index运算符并为其指定一个参数-它实际上等效于x.__setitem__(0, 4),这显然会更改原始对象,而不创建新对象。

2020-12-20