पायथन स्मृति पदों का पुन: उपयोग कर सकते हैं।
जब आप चलाएँ:
id(1.1)
आप, एक नाव मूल्य बनाने इसकी id()
के लिए पूछना, और उसके बाद अजगर फिर मूल्य को हटा देता है क्योंकि कुछ भी नहीं करने के लिए संदर्भित करता है। जब आप तो एक और नाव मूल्य बनाने, अजगर एक ही स्मृति स्थिति का पुन: उपयोग कर सकते हैं और इस प्रकार id(2.2)
id()
के लिए समान मान की संभावना है:
>>> id(1.1)
140550721129024
>>> id(2.2)
140550721129024
बजाय यह करें:
float_one, float_two = 1.1, 2.2
print id(float_one), id(float_two)
अब फ्लोट मानों में उनके संदर्भ (दो चर) हैं और इन्हें नष्ट नहीं किया जाएगा, और अब उनके पास अलग-अलग मेमोरी स्थितियां हैं और इस प्रकार id()
मान हैं।
छोटे पूर्णांक (-5 से 256 तक) के लिए अलग-अलग id()
मानों को देखने का कारण यह है क्योंकि these values are interned; पायथन केवल एक1
पूर्णांक ऑब्जेक्ट बनाता है और इसे बार-बार उपयोग करता है। नतीजतन, इन पूर्णांकों में सभी का एक अद्वितीय स्मृति पता होता है, क्योंकि पाइथन दुभाषिया स्वयं ही उन्हें संदर्भित करता है, और जब तक दुभाषिया बाहर निकलता है तब तक उन्हें हटा नहीं देगा।
स्रोत
2013-06-16 09:57:13
आह हाँ, मैं IPython जहां में था संख्याओं को बाहर रखा जाता है! :) –
धन्यवाद @MartijnPieters। – ehsandotnet
ध्यान दें कि छोटे पूर्णांक का यह इंटर्निंग शायद भाषा की गारंटीकृत संपत्ति के बजाय CPython _implementation_ की एक विशेषता है। इस मामले में, यह कुछ उद्देश्य-सी कार्यान्वयन में छोटे एनएसआईएनटेगर मूल्यों (स्मृति से 12 से 12) के समान है जहां लोगों ने अजीब बनाए रखने के बारे में सोचा है। और, इस तरह, शायद इस इंटर्निंग पर भरोसा करना अच्छा विचार नहीं है। – paxdiablo