尽管这个问题在实际中没有任何实际用途,但我对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个字符。