अजगर सब कुछ संदर्भ से भी जाना जाता
अजगर में, सब कुछ एक संदर्भ है, और संदर्भ मूल्य से चारों ओर पारित हो जाओ।
यदि आप उन शर्तों का उपयोग करना चाहते हैं। लेकिन वे शब्द चीजों को समझने में कठोर बनाते हैं।
बहुत आसान: पायथन में, एक चर एक ऑब्जेक्ट का नाम है। =
का उपयोग उस वस्तु को बदलने के लिए किया जाता है जिसका नाम किसी नाम से संदर्भित होता है। बाएं हाथ की ओर एक मौजूदा वस्तु के हिस्से को संदर्भित कर सकते हैं, इस मामले में उस वस्तु को बदलकर पूरी वस्तु बदल दी जाती है। ऐसा इसलिए है क्योंकि ऑब्जेक्ट, बदले में, वास्तव में इसके हिस्सों को नहीं रखता है, बल्कि इसके बजाय अधिक नाम होते हैं, जो विभिन्न चीजों का जिक्र करना शुरू कर सकते हैं।
तो जब एक नई वस्तु बनाई गई है?
ऑब्जेक्ट (वर्ग निर्माता का उपयोग करके, या एक शाब्दिक को लिखकर निर्मित प्रकार एक शाब्दिक प्रतिनिधित्व है, के मामले में) बनाई गई हैं, जब वे बनाए गए हैं। मुझे समझ में नहीं आता कि यह आपके शेष प्रश्न के लिए प्रासंगिक है।
m = m[1:] # m changes its reference to the new sliced list
हां, ज़ाहिर है। अब m
m[1:]
का मूल्यांकन करने के परिणाम को संदर्भित करता है।
edits m but not d (I wanted to change d)
हां, ज़ाहिर है। यह d
बदल जाएगा? यह किसी प्रकार का जादू नहीं था, यह केवल d['m']
का मूल्यांकन करने का परिणाम था। बिल्कुल वही बात दोनों पंक्तियों पर होती है। एक सरल उदाहरण पर
आइए नज़र।
m = 1
m = 2
इस कारण 1
2
बनने के लिए करता है? नहीं बिलकुल नहीं। इंटीजर अपरिवर्तनीय हैं। लेकिन वही बात हो रही है: m
एक चीज़ का नाम है, और फिर किसी अन्य चीज़ का नाम है।
या, एक और तरीका है: यदि "संदर्भ" जिस तरह से आप उम्मीद कर काम करने के लिए थे, तो लाइन m = m[1:]
पुनरावर्ती होगा। आप इसकी अपेक्षा कर रहे हैं "कहीं भी आप m
देखते हैं, इसका इलाज करें जैसे कि इसका मतलब m[1:]
" है। ठीक है, उस स्थिति में, m[1:]
वास्तव में m[1:][1:]
है, जो तब m[1:][1:][1:]
का मतलब होगा, आदि
आप एक दृश्य शिक्षार्थी रहे हैं, [यहाँ है] (http://people.csail.mit.edu/pgbovine/python मतलब होगा /) एक अच्छा ट्यूटोरियल – forivall
बेहद सहायक टिप्पणी श्री @ jordoex - गंभीर रूप से बहुत बढ़िया! –