हालांकि इस प्रश्न का व्यवहार में कोई वास्तविक उपयोग नहीं है, लेकिन मैं उत्सुक हूं कि पायथन स्ट्रिंग इंटर्निंग कैसे करता है। मैंने निम्नलिखित पर ध्यान दिया है।
>>> "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 वर्णों से छोटा है।