Python aliasing



我知道鉴于此代码

a = [1,2,3]
b = [4,5,6]
c = a

然后通过这样做

a[0] = 0

我会改变 a 和 c 的第一个位置。 有人可以解释为什么当我这样做时这不适用:

a = b

即为什么C不等于B?

a = [1,2,3]
b = [4,5,6]
#       a  ────────>    [1,2,3]
#       b  ────────>    [4,5,6]

c = a    # Changing 'c' to point at the list that 'a' points at
#       c  ─────┐
#       a  ─────┴──>    [1,2,3]
#       b  ────────>    [4,5,6]

a = b    # Changing 'a' to point at the list that 'b' points at
#       c  ─────┐
#       a  ──┐  └──>    [1,2,3]
#       b  ──┴─────>    [4,5,6]

因为python从代码的开头到底线解释代码行。因此,在将 a 分配给 c 之后,您已被分配 b 到 a。在重新分配 c 之前,c 的值不会更改。

相关内容

  • 没有找到相关文章

最新更新