python - 为什么具有相同值的列表不指向 python 中的相同内存位置?

标签 python python-3.x list

<分区>

考虑以下几点:

var1 = 'test test'
var2 = 'test test'

list1=[10,12,12,"Test"]

list2=[10,12,12,"Test"]

print(id(var1) == id(var2)) # True
print(id(list1) == id(list2)) # False

这个 bool 表达式给出 False。这意味着 list1 和 list2 的内存位置不同。为什么具有相同值的变量指向相同的内存位置,而列表指向不同的位置?

最佳答案

列表是可变的。您不希望更改一个表面上独立的列表来修改另一个巧合相同的列表。

另一方面,字符串是不可变的。您不能对 var1 进行会影响 var2 的更改,因此可以共享基础对象。请注意,保证两个 str 字面量会产生相同的对象。何时以及是否发生此类缓存取决于实现。

关于python - 为什么具有相同值的列表不指向 python 中的相同内存位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58150539/

相关文章:

python - 我在运行代码时遇到错误(语法无效)

Python:均匀分布具有不同字符串长度的输出数据

python - 检查字典的链式实现中的值

CSS:如何制作水平(UL)列表,使每个元素的宽度保持一致?

python - 字符串列表列表到字典列表

python - 在配置文件中使用字典而不是列表是一个坏习惯吗?

Python Turtle 透明填充?

Python:在 lxml 中添加命名空间

python - 如何在 Python elasticsearch 中转义连字符

python - 可以在不等待流程完成的情况下调用 subprocess.call 吗?