Bu sorunun pratikte herhangi bir kullanımı olmasa da, Python'un string interneti nasıl yaptığını merak ediyorum. Aşağıdakileri fark ettim.
>>> "string" is "string"
True
Bu beklediğim gibi.
Bunu da yapabilirsiniz.
>>> "strin"+"g" is "string"
True
Ve bu oldukça zekice!
Ama bunu yapamazsın.
>>> s1 = "strin"
>>> s2 = "string"
>>> s1+"g" is s2
False
Python neden değerlendirip s1+"g"
aynı olduğunu fark s2
edip aynı adrese işaret etmesin? Son blokta, geri dönmesi için gerçekte neler oluyor False
?
"string1" + "s2"
,10 + 3*20
derleme zamanında, vs.), ancak ortaya çıkan sınırları dizileri sadece 20 elemanlarına (önlemek için[None] * 10**1000
aşırı sizin bayt kodu genişleyen itibaren). Bu çökmüş bu optimizasyon"strin" + "g"
içine"string"
; sonuç 20 karakterden kısa.