पायथन में nonlocal इंस्ट्रक्शन

ऐसे मामले होते हैं जब बाहरी फ़ंक्शन में एक चर होता है, जिसे आंतरिक फ़ंक्शन में एक्सेस करने की आवश्यकता होती है। आइए फ़ंक्शन outer में एक चर i घोषित करें। आंतरिक फ़ंक्शन के संबंध में यह चर बाहरी होगा (ग्लोबल वेरिएबल केवल वे होते हैं जो बाहरी कोड में घोषित किए जाते हैं)। और फ़ंक्शन inner में i में एक जोड़ने का कार्य दें:

pythondef outer():
  i = 0

  def inner():
    i += 1  # त्रुटि देगा

  inner()

  return i

हालाँकि, inner के लिए चर i एक स्थानीय चर है, पायथन इसे अघोषित मानता है और संबंधित त्रुटि दिखाता है। पहले, इस तरह की त्रुटि को global इंस्ट्रक्शन का उपयोग करके ठीक किया जाता था। हालाँकि, यहाँ i एक बाहरी चर है, इसलिए nonlocal इंस्ट्रक्शन का उपयोग करना चाहिए। यह ग्लोबल को छोड़कर, निकटतम स्कोप से चर के नाम लेता है, यानी inner के अंदर i उस चर से लिया जाएगा जो इस फ़ंक्शन के ऊपर घोषित किया गया है:

pythondef outer():
  i = 0

  def inner():
    nonlocal i
    i += 1

  inner()

  return i

print(outer()) # आउटपुट 1
Задание 1

निम्नलिखित कोड में किसी प्रोग्रामर ने गलती की है:

pythonnum = 10
def outer():
  num = 5

  def inner():
    num -= 2

  inner()

  return num
  
print(outer())

इस कोड में क्या गलत है? लेखक की गलती ढूंढें और सही करें।

Задание 2

निम्नलिखित कोड में किसी प्रोग्रामर ने गलती की है:

pythonnum = 3
def outer():
  num += 1
  tst = num

  def inner():
    tst = tst ** 3

  inner()

  return tst
  
print(outer())

इस कोड में क्या गलत है? लेखक की गलती ढूंढें और सही करें।