अजगर मेंपाइथन स्ट्रिंग को कैसे संग्रहीत करता है ताकि 'is' ऑपरेटर अक्षर पर काम करता है?
>>> a = 5
>>> a is 5
True
लेकिन
>>> a = 500
>>> a is 500
False
इसका कारण यह है कि यह एक ही पते के रूप में कम पूर्णांक संग्रहीत करता है। लेकिन एक बार जब संख्या जटिल हो जाती है, तो प्रत्येक int को अपना अनूठा पता स्थान मिलता है। मुझे यह अर्थपूर्ण लग रहा है।
वर्तमान कार्यान्वयन जब आप उस सीमा आप वास्तव में सिर्फ वापस मौजूदा ऑब्जेक्ट के लिए एक संदर्भ पाने में एक पूर्णांक बनाने के लिए, -5 और 256 के बीच सभी पूर्णांकों के लिए पूर्णांक ऑब्जेक्ट की श्रृंखला रहता है।
तो अब, यह तारों पर क्यों लागू नहीं होता है? तारों को बड़े पूर्णांक के रूप में जटिल नहीं हैं (यदि मोरेसो नहीं है)?
>>> a = '1234567'
>>> a is '1234567'
True
पाइथन सभी स्ट्रिंग अक्षरों के लिए कुशलतापूर्वक समान पते का उपयोग कैसे करता है? यह संख्याओं के लिए हर संभव स्ट्रिंग की सरणी नहीं रख सकता है।
'is' तुलना ऑब्जेक्ट' id's –
यह स्मृति पते की तुलना भी करता है। देखें http://stackoverflow.com/questions/2987958/how-is-the-is-keyword-implemented-in-python –
आईडी == स्मृति पता सीपीथॉन आईआईआरसी में –