Python多重分配和参考

发布于 2021-01-29 15:01:13

为什么多重赋值为int而不是列表或其他对象提供不同的引用?

>>> a = b = 1
>>> a += 1
>>> a is b
>>>     False
>>> a = b = [1]
>>> a.append(1)
>>> a is b
>>>     True
关注者
0
被浏览
71
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    在int示例中,您首先将a和分配了相同的对象b,然后a使用另一个对象(的结果a+1)重新分配。a现在指的是另一个对象。

    在列表示例中,您为a和分配了相同的对象b,但是您并没有做任何更改。append仅更改列表对象的内部状态,而不更改其标识。因此,它们保持不变。

    如果替换a.append(1)a = a + [1],则最终会得到不同的对象,因为再次需要为分配一个新对象(的结果a+[1]a

    请注意,这a+=[1]会有所不同,但这是另一个问题



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看