ठीक है, मुझे कुछ छवियों के साथ समझाने की कोशिश करते हैं।
पायथन में, सब कुछ एक वस्तु है। उन वस्तुओं को संदर्भित चर द्वारा संदर्भित किया गया है। सूचियों और tuples जैसे कुछ प्रकार की वस्तुओं, बस अन्य वस्तुओं के संदर्भ स्टोर।
कहा, जब आप पर अमल
myVar = ["jhhj", "hgc"]
myTuple = ([1,2,3], [4,5,6], myVar)
आप कम या ज्यादा इस परिदृश्य मिलती है:
प्रत्येक वस्तु एक बॉक्स/आयत द्वारा दर्शाया गया। हमारे पास दो स्ट्रिंग ऑब्जेक्ट्स हैं, "jhhj"
और "hgc"
। इसके अलावा, हमारे पास एक सूची वस्तु है, जो चर myVar
द्वारा इंगित की गई है; यह सूची ऑब्जेक्ट दोनों स्ट्रिंग ऑब्जेक्ट्स को इंगित करती है। इसके अलावा, हमारे पास एक tuple वस्तु है, myTuple
द्वारा संदर्भित; यह ट्यूपल ऑब्जेक्ट दो अन्य सूचियों और myVar
द्वारा संदर्भित सूची को इंगित करता है।
जब आप
myVar.append('lololol')
क्या होता है पर अमल?
नोट myVar
अभी भी संदर्भ सूची वस्तु: ठीक है, सूची वस्तु (जो संयोग से myVar
द्वारा बताया जाता है) एक और मूल्य, स्ट्रिंग वस्तु "lololol"
संदर्भित करने के लिए शुरू होता है। क्या हुआ कि सूची वस्तु बदल गई।आप इस सूची ऑब्जेक्ट को myVar
से या टुपल से देख सकते हैं, आप एक ही ऑब्जेक्ट को उसी परिवर्तन के साथ देखेंगे।
OTOH, जब आप पर अमल
myVar = "lol"
myTuple = ([1,2,3], [4,5,6], myVar)
आप कुछ इस तरह मिलती है:
अब स्ट्रिंग वस्तु "lol"
करने के लिए myVar
अंक, साथ ही टपल संदर्भ वह अपने तीसरे स्थान पर । अब, आप निष्पादित
myVar = "lolol"
आप सिर्फ एक और वस्तु को इंगित करने के myVar
बना रहे हैं। टपल वस्तु अभी भी पहले की तरह "lol"
को इंगित करता है:
इसलिए, यदि आप एक चर के लिए एक नया महत्व देते हैं, यह सिर्फ इस चर द्वारा बताया मूल्य बदल जाएगा। चर द्वारा संदर्भित पिछले मान अभी भी मौजूद होगा * और इसके लिए इंगित करने वाला कोई भी अन्य चर या ऑब्जेक्ट उस पर इशारा करेगा। सिर्फ जिम्मेदार चर बदल जाएगा।
पीएस: इसके अलावा, I answered a vaguely related question some time ago। आपको उत्तर उपयोगी मिल सकता है।
* अगर यह कचरा कलेक्टर द्वारा एकत्र किया जाता है, लेकिन यह एक और लंबा इतिहास है।
कैसे जोड़कर आओ कार्यक्रम में बाद में एक सूची मूल tuple संशोधित करता है? –
आप tuple –
के अंदर सूची ऑब्जेक्ट को संशोधित कर रहे हैं आप टुपल को संशोधित नहीं कर रहे हैं। आप एक टुपल के सूची सदस्यों को संशोधित कर रहे हैं। एक थोड़ा गलत है, लेकिन उपयोगी तरीका यह को देखने के लिए है कि एक टपल '([1,2], [3,4])' वास्तव में है '(address_to_list1, address_to_list2)' आप पते, लेकिन सूचियों को बदल नहीं सकते अलग, परिवर्तनीय वस्तुओं हैं। –