尽管这个问题在实际中没有任何实际用途,但我对Python如何进行字符串实习感到好奇。我注意到以下内容。
>>> "string" is "string"
True
这是我所期望的。
您也可以这样做。
>>> "strin"+"g" is "string"
True
那真是太聪明了!
但是您不能这样做。
>>> s1 = "strin"
>>> s2 = "string"
>>> s1+"g" is s2
False
Python为什么不评估s1+"g"
,并意识到它s2
与指向相同的地址相同?最后一个块到底在做什么False
呢?
"string1" + "s2"
,10 + 3*20
在编译时,等),但造成的限制序列,只是20元(以防止[None] * 10**1000
从过度扩大你的字节码)。正是这种优化"strin" + "g"
陷入了"string"
; 结果少于20个字符。