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