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 инструкциясын қолдану керек.
Ол аталған айнымалы атауларын глобалдыны қоспағанда,
ең жақын көрінетін аймақтан алады, яғни 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())
Бұл кодта не дұрыс емес? Код авторының қатесін тауып, түзеңіз.