Python 多重赋值和引用

标签 python list variable-assignment

为什么多重赋值对整数进行不同的引用,而不是列表或其他对象?

>>> a = b = 1
>>> a += 1
>>> a is b
>>>     False
>>> a = b = [1]
>>> a.append(1)
>>> a is b
>>>     True

最佳答案

在 int 示例中,您首先将同一对象分配给 ab,然后将 a 重新分配给另一个对象( a+1 的结果)。 a 现在指的是一个不同的对象。

在列表示例中,您将同一个对象分配给 ab,但是您没有做任何更改。 append 仅更改列表对象的内部状态,而不是其身份。因此它们保持不变。

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

请注意,a+=[1] 的行为会有所不同,但这是一个整体 other question .

关于Python 多重赋值和引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31152195/

相关文章:

android - 在android终端模拟器中执行python脚本

python - 如何在 Python 的 SQL 语句中使用变量?

python - 批量更新不工作pymongo

python - 为什么 var = [0].extend(range(1,10)) 在 python 中不起作用?

python - 列表按字母顺序而不是数字顺序排列

C 指针未正确分配

C - printf 输出说明 ("%d %d\n",k=1,k=3);

Python:分配多个嵌套列表的最短方法是什么

python - Django 休息和 react : lookup_field = 'slug' not returning item from db

c - 列表程序中不兼容指针类型的赋值