这里发生了什么?:
>>> a, b, c = ("TEST", "test", "TEST".lower())
>>> map(id, [a,b,c])
[140341845003072, 140341845003216, 140341845003264]
>>> map(str, [a,b,c])
['TEST', 'test', 'test']
>>> map(type, [a,b,c])
[<type 'str'>, <type 'str'>, <type 'str'>]
“TEST”和“TEST”.lower() 或“test”和“test”.lower() 不应该共享相同的内存位置吗?
编辑:我知道有一个新副本,但我认为当两个字符串相同时,它们共享相同的内存空间,即:
>>> a = "test"
>>> b = "test"
>>> map(id, (a,b))
[140341845003216, 140341845003216]
>>> a is b
True
在 Python 2.7.3 上,我得到:
>>> a = "test"
>>> a is a.lower()
False