"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > पायथन कॉल बाय रेफरेंस और कॉल बाय ऑब्जेक्ट रेफरेंस का उपयोग कब करता है?

पायथन कॉल बाय रेफरेंस और कॉल बाय ऑब्जेक्ट रेफरेंस का उपयोग कब करता है?

2024-11-08 को प्रकाशित
ब्राउज़ करें:995

When Does Python Use Call by Reference and Call by Object Reference?

पायथन फ़ंक्शंस कॉल बाय रेफ़रेंस (डुप्लिकेट)

कई प्रोग्रामिंग भाषाओं में, पैरामीटर को मान द्वारा या विशिष्ट आरक्षित शब्दों का उपयोग करके संदर्भ द्वारा पारित किया जा सकता है . हालाँकि, पायथन में, जब कोई पैरामीटर किसी फ़ंक्शन को पास किया जाता है, तो यह कॉलिंग फ़ंक्शन में मूल चर के मान को कभी भी संशोधित नहीं करता है।

उदाहरण 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 जोड़ता है। चूंकि सूची ऑब्जेक्ट संदर्भ द्वारा पारित की जाती है, फ़ंक्शन के भीतर सूची में किया गया कोई भी परिवर्तन कॉलिंग फ़ंक्शन में दिखाई देगा।

पास बाय रेफरेंस बनाम पास बाय ऑब्जेक्ट रेफरेंस

  • संदर्भ द्वारा पास करें: मूल चर का बॉक्स कॉल किए गए फ़ंक्शन में पास किया जाता है, जिससे चर की सामग्री में कोई भी परिवर्तन प्रतिबिंबित हो सकता है कॉलिंग फ़ंक्शन में।
  • ऑब्जेक्ट संदर्भ द्वारा पास करें: मूल ऑब्जेक्ट के बॉक्स का एक संदर्भ कॉल किए गए फ़ंक्शन को पास किया जाता है। ऑब्जेक्ट में परिवर्तन कॉलिंग और कॉल किए गए फ़ंक्शन दोनों में प्रतिबिंबित होते हैं, लेकिन वेरिएबल (बॉक्स) में परिवर्तन नहीं होते हैं। स्वयं वस्तुओं के बजाय वस्तुएँ। यह फ़ंक्शंस को पास की गई वस्तुओं को संशोधित करने की अनुमति देता है, लेकिन परिवर्तनीय संदर्भों में परिवर्तन स्वयं कॉलिंग फ़ंक्शन में वापस प्रसारित नहीं होते हैं।
विज्ञप्ति वक्तव्य इस लेख को पुन: पेश किया गया है: 1729140861 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए [email protected] पर संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3