पायथन में आंतरिक फ़ंक्शन के साथ काम करते समय बारीकियाँ
पायथन में न केवल नेस्टेड
फ़ंक्शन हो सकते हैं, बल्कि एक फ़ंक्शन दूसरा फ़ंक्शन
वापस भी कर सकता है। उदाहरण के लिए, मान लीजिए कि फ़ंक्शन outer
फ़ंक्शन inner का स्रोत कोड
परिणाम के रूप में वापस करता है:
def outer():
def inner():
return '+++'
return inner
आइए outer का कॉल
वेरिएबल res में लिखें:
res = outer()
print(res)
कोड निष्पादित होने के बाद फ़ंक्शन वाला ऑब्जेक्ट प्रिंट होगा:
<function outer.<locals>.inner at 0x000001564A212B90>
यदि वेरिएबल res को
कोष्ठकों के साथ कॉल किया जाए, तो संदेश
'+++' वापस आएगा:
print(res()) # '+++' प्रिंट करेगा
कोड को इस तरह से फिर से लिखा जा सकता है कि res
में outer को दो कोष्ठकों के साथ
लिखा जाए - स्वयं को और फ़ंक्शन
inner को कॉल करने के लिए। इससे यह निष्कर्ष निकलता है कि
बाहरी फ़ंक्शन के दाईं ओर अतिरिक्त कोष्ठक
उसमें नेस्टेड फ़ंक्शनों की संख्या के अनुसार
लगाए जा सकते हैं:
res = outer()()
print(res) # '+++' प्रिंट करेगा
निम्नलिखित कोड दिया गया है:
def outer():
def inner(num):
return num + 2
return inner
res = outer()(3)
print(res)
बताएं कि कंसोल में क्या प्रिंट होगा।
निम्नलिखित कोड दिया गया है:
def outer():
def inner(txt):
return 'hello, ' + txt
return inner
res = outer()
print(res)
बताएं कि कंसोल में क्या प्रिंट होगा।