【发布时间】:2017-03-09 01:21:34
【问题描述】:
>>> a = "zzzzqqqqasdfasdf1234"
>>> b = "zzzzqqqqasdfasdf1234"
>>> id(a)
4402117560
>>> id(b)
4402117560
但是
>>> c = "!@#$"
>>> d = "!@#$"
>>> id(c) == id(d)
False
>>> id(a) == id(b)
True
为什么只有在分配字符串时才能得到相同的 id() 结果?
已编辑:我将“ascii string”替换为“string”。感谢反馈
【问题讨论】:
-
这些都是ascii字符串...
-
还要注意,这里的实习(缓存)是一个 CPython 实现细节,它取决于 很多 的东西。请注意,如果你把它放在一个脚本中,你会得到与在 REPL 中运行它不同的结果......