Инструкцијата nonlocal во Python
Има случаи кога во надворешната функција
постои променлива на која треба да се добие
пристап во внатрешната функција. Да декларираме во
функцијата outer променлива i.
Во однос на внатрешната функција оваа
променлива ќе биде надворешна (глобални
се променливите декларирани САМО
во надворешниот код). А на функцијата inner
ќе и доделиме додавање на i
еден:
def outer():
i = 0
def inner():
i += 1 # ќе испише [4, 9, 25]
inner()
return i
Сепак, за inner променливата i
е локална, Python ја смета за
недекларирана и ја прикажува соодветната
грешка. Порано ваквата грешка се поправаше
со инструкцијата global. Сепак,
овде i е надворешна променлива,
затоа треба да се користи инструкцијата
nonlocal. Таа ги зема наведените
имиња на променливи во најблискиот опсег
на видливост, исклучувајќи ја глобалната, т.е. i
внатре во inner ќе се земе од променливата,
декларирана погоре од оваа функција:
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())
Што не е во ред со овој код? Најдете и поправете ја грешката на авторот на кодот.