पायथन में nonlocal इंस्ट्रक्शन
ऐसे मामले होते हैं जब बाहरी फ़ंक्शन में
एक चर होता है, जिसे आंतरिक फ़ंक्शन में
एक्सेस करने की आवश्यकता होती है। आइए
फ़ंक्शन outer में एक चर i
घोषित करें।
आंतरिक फ़ंक्शन के संबंध में यह चर
बाहरी होगा (ग्लोबल वेरिएबल केवल वे
होते हैं जो बाहरी कोड में घोषित किए
जाते हैं)। और फ़ंक्शन inner
में i में एक जोड़ने का कार्य
दें:
def outer():
i = 0
def inner():
i += 1 # त्रुटि देगा
inner()
return i
हालाँकि, inner के लिए चर i
एक स्थानीय चर है, पायथन इसे अघोषित
मानता है और संबंधित त्रुटि दिखाता है।
पहले, इस तरह की त्रुटि को global
इंस्ट्रक्शन का उपयोग करके ठीक किया
जाता था। हालाँकि,
यहाँ i एक बाहरी चर है,
इसलिए nonlocal इंस्ट्रक्शन का
उपयोग करना चाहिए। यह ग्लोबल को छोड़कर,
निकटतम स्कोप से चर के नाम लेता है,
यानी inner के अंदर i
उस चर से लिया जाएगा जो इस फ़ंक्शन के
ऊपर घोषित किया गया है:
def outer():
i = 0
def inner():
nonlocal i
i += 1
inner()
return i
print(outer()) # आउटपुट 1
निम्नलिखित कोड में किसी प्रोग्रामर ने गलती की है:
num = 10
def outer():
num = 5
def inner():
num -= 2
inner()
return num
print(outer())
इस कोड में क्या गलत है? लेखक की गलती ढूंढें और सही करें।
निम्नलिखित कोड में किसी प्रोग्रामर ने गलती की है:
num = 3
def outer():
num += 1
tst = num
def inner():
tst = tst ** 3
inner()
return tst
print(outer())
इस कोड में क्या गलत है? लेखक की गलती ढूंढें और सही करें।