कोई [नोट मैं अजगर 2.7 और 3.x में रुचि होगी], पायथन में चर नहीं संकेत दिए गए हैं।
वे वस्तुओं को एक ढेर पर संदर्भित करते हैं, और एक चर को आवंटित करने से संदर्भित वस्तु नहीं बदली जाती है, लेकिन परिवर्तनीय। चर और वस्तुओं गुब्बारे से बंधे लेबल की तरह हैं; असाइनमेंट लेबल को इसके बजाय एक अलग गुब्बारे पर reties।
इस previous answer of mine देखें गुब्बारे के उस विचार का पता लगाने के लिए और एक थोड़ा और अधिक लेबल करता है।
उस ने कहा, कुछ ऑब्जेक्ट प्रकार विशिष्ट जगह-जगह अतिरिक्त व्यवहार को लागू करते हैं। वस्तु परिवर्तनशील (गुब्बारा ही बदल सकते हैं) है, तो एक में जगह जोड़ने एक परिवर्तन के बजाय एक काम के रूप में व्याख्या की जा सकती।
तो, पूर्णांक के लिए, item += 1
वास्तव में item = item + 1
जैसा ही है क्योंकि पूर्णांक अपरिवर्तनीय हैं। एक नया पूर्णांक ऑब्जेक्ट बनाने के लिए में है और item
उस नई ऑब्जेक्ट को लेबल करें। दूसरी ओर
सूचियाँ, परिवर्तनशील हैं और lst += [other, items]
एक lst.__iadd__([other, items])
के रूप में कार्यान्वित किया जाता है और उस lst
गुब्बारा ही बदल जाता है। एक काम अभी भी जगह लेता है, लेकिन यह एक reassigment एक ही वस्तु के है, के रूप में .__iadd__()
विधि बस एक नया वस्तु के स्थान पर self
देता है। हम लेबल को उसी गुब्बारे में फिर से बांधना समाप्त कर देते हैं।
लूप आपको प्रत्येक पुनरावृत्ति पर सूची में अगले आइटम का संदर्भ देता है। यह आपको मूल सूची को स्वयं नहीं बदलने देता है (यह केवल गुब्बारा लेबल का एक और सेट है); इसके बजाय यह आपको निहित प्रत्येक आइटम में एक नया लेबल देता है।
स्रोत
2013-02-11 15:06:57
आप इसे अभी क्यों नहीं देखते? –
नहीं; क्या यह [मेरा पिछला उत्तर] है (http://stackoverflow.com/questions/12080552/python-list-doesnt-reflect-variable-change-new-to-python/12080644#12080644) बिल्कुल मदद करें? –
मुझे नहीं लगता कि यह मूल्य का पीछा करेगा (क्या आप इसे आजमा सकते हैं?) –