我使用a = 'linux!', b = 'linux!', c = 'linux', d='linux'
,为什么会这样?
Python 3.6.3 (v3.6.3:2c5fed8, Oct 3 2017, 18:11:49) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> a = 'linux!'
>>> b = 'linux!'
>>> id(a)
2502413115552
>>> id(b)
2502414669112
>>> c = 'linux'
>>> d = 'linux'
>>> id(c)
2502413088616
>>> id(d)
2502413088616
>>>
答案 0 :(得分:4)
Python可以选择何时重用具有相等值的不可变对象。语言的语义并不表示a和b是否必须是同一个对象。
对象重用是一种权衡的优化。我相信字符串如果可能是标识符就会重复使用,但这可能只是一个谣言。