निम्नलिखित कोड में, 'message' वेरिएबल ने P1 में सही मान प्रिंट किया, लेकिन P2 में कुछ भी प्रिंट नहीं किया। मैंने कोड के इस टुकड़े को लिखने के लिए एक ट्यूटोरियल का अनुसरण किया, और यह बहुत कुछ वैसा ही दिखता है जैसा उसने लिखा था। मैं पायथन 3.6 का उपयोग कर रहा हूँ। क्या कोई समझा सकता है क्यों?

def outer_function(msg):
    message = msg 
    print(message) #P1
def inner_function():
    print(message) #P2
    return inner_function()

ट्यूटोरियल में सटीक कोड का स्क्रीन ग्रैब

0
Vishwanath Seshagiri 3 अप्रैल 2018, 08:04

3 जवाब

सबसे बढ़िया उत्तर

हां, जैसा कि @see... द्वारा उल्लेख किया गया है, फॉर्म इंडेंटेशन के अलावा, आपका कोड स्टैक ओवरफ़्लो का कारण बनेगा:

शायद आपका कोड नीचे जैसा दिखना चाहिए:

def outer_function(msg):
    message = msg
    print(message) #P1
    def inner_function():
        print(message) #P2
    return inner_function()
outer_function("hello")
4
Rehan Azher 3 अप्रैल 2018, 05:10

आमतौर पर क्लोजर केवल बाहरी फ़ंक्शन के वेरिएबल्स को याद रखने की क्षमता होती है, जब बाहरी फ़ंक्शन दायरे से बाहर हो जाता है।

तो मैं उम्मीद करता हूं कि आपके कोड को काम करने के लिए ठीक से इंडेंट किया जाएगा जैसा कि माना जाता है।

def outer_function(msg): 
      message = msg print(message) #P1 
      def inner_function():
            print(message) #P2 
      return inner_function()

यहां, बाहरी_फंक्शन दायरे से बाहर होने पर भी चर संदेश को आंतरिक फ़ंक्शन द्वारा याद किया जाता है

0
user3001658 3 अप्रैल 2018, 05:38

गलत इंडेंटेशन के अलावा (जो मुझे लगता है कि एक टाइपो है) आपका inner_function बार-बार खुद को हमेशा के लिए कॉल करता है, इसलिए मैं यहां एक स्टैक ओवरफ्लो की अपेक्षा करता हूं।

0
see sharper 3 अप्रैल 2018, 05:09