<分区>
Possible Duplicate:
Python: Why is (“hello” is “hello”)?
['hello'] is ['hello'] # gives False
为什么?他们的id不一样。为什么元组或数字最终没有返回 False?
标签 python
<分区>
Possible Duplicate:
Python: Why is (“hello” is “hello”)?
['hello'] is ['hello'] # gives False
为什么?他们的id不一样。为什么元组或数字最终没有返回 False?
最佳答案
请考虑以下内容(Python 2.7.3,64 位):
>>> a = "Hello"
>>> b = "Hello"
>>> a is b
True
Python 实习短字符串 'Hello'
,只存储一次。这是一个实现细节,语言标准不保证。它可能会在更长的字符串上失败:
>>> a = "this is a long string"
>>> b = "this is a long string"
>>> a is b
False
现在考虑一下:
>>> a = ["Hello"]
>>> b = ["Hello"]
>>> a is b
False
a
和 b
是两个不同的对象。您可以使用 id()
进行检查:
>>> id(a)
33826696L
>>> id(b)
33826952L
这是一件好事TM 因为当你这样做的时候
>>> a[0] = "Goodbye"
>>> a
['Goodbye']
>>> b
['Hello']
但是,如果你这样做
>>> a = ["Hello"]
>>> b = a
>>> a is b
True
>>> a[0] = "Goodbye"
>>> b
['Goodbye']
因为 a
和 b
是引用同一对象的名称 (id(a) == id(b)
)。最后,要表明即使你得到了
>>> a = ["Hello"]
>>> b = ["Hello"]
>>> a is b
False
字符串仍然保留并仅存储一次:
>>> id(a[0])
33846096L
>>> id(b[0])
33846096L
关于python - 为什么 ['hello' ] 是 ['hello' ] 在 Python 中返回 False?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12794560/