हालांकि इस प्रश्न का व्यवहार में कोई वास्तविक उपयोग नहीं है, लेकिन मैं उत्सुक हूं कि पायथन स्ट्रिंग इंटर्निंग कैसे करता है। मैंने निम्नलिखित पर ध्यान दिया है।
>>> "string" is "string"
True
यह मेरी अपेक्षा के अनुसार है।
आप यह भी कर सकते हैं।
>>> "strin"+"g" is "string"
True
और यह बहुत चालाक है!
लेकिन आप ऐसा नहीं कर सकते।
>>> s1 = "strin"
>>> s2 = "string"
>>> s1+"g" is s2
False
पायथन का मूल्यांकन क्यों नहीं होगा s1+"g"
, और यह महसूस होगा कि यह समान है s2
और इसे उसी पते पर इंगित करता है? वास्तव में उस आखिरी ब्लॉक में क्या हो रहा है कि उसे वापस करना है False
?
"string1" + "s2"
,10 + 3*20
आदि) पर पायथन के पीप-होल ऑप्टिमाइज़ेशन अंकगणितीय ऑपरेशनों की पूर्व-गणना करेगा , लेकिन परिणामी अनुक्रमों को केवल 20 तत्वों तक सीमित करता है ([None] * 10**1000
अपने बायोटेक का विस्तार करने से रोकने के लिए )। यह वह अनुकूलन है जो ढह"strin" + "g"
गया"string"
; परिणाम 20 वर्णों से छोटा है।