儘管這個問題在實踐中沒有任何實際用處,但我對Python如何進行字符串實習感到好奇。我注意到了以下幾點。Python string interning
>> "string" is "string"
>> True
這是我所期望的。
您也可以這樣做。
>> "strin"+"g" is "string"
>> True
而且這很聰明!
但你不能這樣做。
>> s1 = "strin"
>> s2 = "string"
>> s1+"g" is s2
>> False
爲什麼不Python的評估s1+"g"
,意識到這一點是一樣的s1
並將其指向相同的地址?實際上在最後一個街區發生的事情是什麼讓它返回False
?
你是怎麼得到這個性感的輸出? – Serdalis 2013-03-21 07:19:33
@Serdalis:http://docs.python.org/2/library/dis.html – NPE 2013-03-21 07:22:59
並記錄在案:在常量Python的窺視孔優化將預先計算的算術運算('「字符串1」 +「S2」' ,'10 + 3 * 20'等),但是會將結果*序列限制在20個元素中(以防止[[None] * 10 ** 1000'過度擴展字節碼)。正是這種優化將''strin'「+」g「'摺疊成''string'';結果短於20個字符。 – 2013-07-10 09:12:36