我对可变和不可变对象之间的区别有点困惑。我想下面的代码块找对象的id:不可变类型的ID
tuple1 = ('Object1', 'Object2')
print id(tuple1)
tuple2 = ('Object1', 'Object2')
print id(tuple2)
list1 = ['Object1', 'Object2']
print id(list1)
list2 = ['Object1', 'Object2']
print id(list2)
string1 = "Foo bar"
print id(string1)
string2 = "Foo bar"
print id(string2)
我得到了相同的ID为字符串,不同的ID的列表,但不同的ID的元组。他们不应该有相同的ID吗?我想知道是否有人可以解释这是如何工作的?
感谢
“你得到与字符串相同的id,因为字符串文字是被拦截的。”这是3.x吗? – khachik 2010-11-27 19:22:24
字符串总是被禁用是不正确的,除非自从我上次查看它之后发生了一些变化。 Python保留不这样做的权利,尽管在实践中它通常使用看起来像字典键的短字符串。 – aaronasterling 2010-11-27 19:28:33