Instruktionen nonlocal i Python
Det finns fall när en yttre funktion
har en variabel som behöver nås
i den inre funktionen. Låt oss deklarera variabeln
i i funktionen outer.
I förhållande till den inre funktionen kommer denna
variabel att vara en yttre (globala
variabler är de som deklareras ENDAST
i den yttre koden). Och till funktionen inner
lägger vi till ett till i:
def outer():
i = 0
def inner():
i += 1 # kommer att ge [4, 9, 25]
inner()
return i
Men för inner är variabeln i
en lokal variabel, Python anser den
odeklarerad och visar motsvarande
fel. Förr åtgärdades ett sådant fel
med instruktionen global. Men
här är i en yttre variabel,
så instruktionen
nonlocal bör användas. Den tar de listade
variabelnamnen till den närmaste omfånget,
exklusive det globala, d.v.s. i
inuti inner kommer att tas från variabeln
deklarerad ovanför denna funktion:
def outer():
i = 0
def inner():
nonlocal i
i += 1
inner()
return i
print(outer()) # kommer att visa 1
I följande kod har en programmerare gjort ett misstag:
num = 10
def outer():
num = 5
def inner():
num -= 2
inner()
return num
print(outer())
Vad är fel med den här koden? Hitta och rätta till programmerarens fel.
I följande kod har en programmerare gjort ett misstag:
num = 3
def outer():
num += 1
tst = num
def inner():
tst = tst ** 3
inner()
return tst
print(outer())
Vad är fel med den här koden? Hitta och rätta till programmerarens fel.