我對可變和不可變對象之間的區別有點困惑。我想下面的代碼塊找對象的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