पायथन फ़ंक्शंस कॉल बाय रेफ़रेंस (डुप्लिकेट)
कई प्रोग्रामिंग भाषाओं में, पैरामीटर को मान द्वारा या विशिष्ट आरक्षित शब्दों का उपयोग करके संदर्भ द्वारा पारित किया जा सकता है . हालाँकि, पायथन में, जब कोई पैरामीटर किसी फ़ंक्शन को पास किया जाता है, तो यह कॉलिंग फ़ंक्शन में मूल चर के मान को कभी भी संशोधित नहीं करता है।
उदाहरण 1: मूल्य द्वारा कॉल करें
k = 2
def foo(n):
n *= n
return n
j = foo(k)
print(j) # 4
print(k) # 2
यहाँ, foo फ़ंक्शन को कॉल करने के बाद k का मान अपरिवर्तित रहता है क्योंकि Python मान के आधार पर तर्क पारित करता है।
उदाहरण 2: ग्लोबल द्वारा कॉल करें
कॉलिंग फ़ंक्शन में वेरिएबल को संशोधित करने के लिए, वैश्विक कीवर्ड का उपयोग किया जा सकता है।
n = 0
def foo():
global n
n *= n
return n
इस मामले में, वैश्विक कीवर्ड n को foo फ़ंक्शन के भीतर संशोधित करने की अनुमति देता है, और इसका मान कॉलिंग फ़ंक्शन में अपडेट किया जाएगा।
ऑब्जेक्ट रेफरेंस द्वारा पास करें हालाँकि, Python
Python, मूल्य द्वारा कॉल या संदर्भ द्वारा कॉल का सख्ती से पालन नहीं करता है। इसके बजाय, यह पास बाय ऑब्जेक्ट रेफरेंस नामक एक अवधारणा को नियोजित करता है।
पायथन में, वेरिएबल ऑब्जेक्ट को संदर्भित करते हैं, न कि स्वयं ऑब्जेक्ट को। जैसे, जब एक वेरिएबल को किसी फ़ंक्शन में पास किया जाता है, तो यह ऑब्जेक्ट का संदर्भ पास करता है, ऑब्जेक्ट का नहीं।
उदाहरण के लिए:
def append_one(li):
li.append(1)
x = [0]
append_one(x)
print(x) # [0, 1]
इस कोड में, append_one फ़ंक्शन सूची x में 1 जोड़ता है। चूंकि सूची ऑब्जेक्ट संदर्भ द्वारा पारित की जाती है, फ़ंक्शन के भीतर सूची में किया गया कोई भी परिवर्तन कॉलिंग फ़ंक्शन में दिखाई देगा।
पास बाय रेफरेंस बनाम पास बाय ऑब्जेक्ट रेफरेंस
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3