nonlocal-instruksjonen i Python
Det hender at det i en ytre funksjon
finnes en variabel som trengs tilgang til
i den indre funksjonen. La oss deklarere variabelen
i i funksjonen outer.
I forhold til den indre funksjonen vil denne
variabelen være en ekstern (globale
variabler er kun de som er deklarert
i den ytre koden). Og la oss gi funksjonen inner
oppgaven med å legge til én på i:
def outer():
i = 0
def inner():
i += 1 # vil vise [4, 9, 25]
inner()
return i
Men for inner er variabelen i
en lokal variabel, Python anser den som
udeklarert og viser en tilhørende
feil. Tidligere ble en slik feil rettet
ved hjelp av instruksjonen global. Men
her er i en ekstern variabel,
så vi bør bruke instruksjonen
nonlocal. Den tar de opplistede
variabelnavnene i nærmeste omfang
synlighet, unntatt den globale, dvs. i
inni inner vil bli tatt fra variabelen
deklarert over denne funksjonen:
def outer():
i = 0
def inner():
nonlocal i
i += 1
inner()
return i
print(outer()) # vil vise 1
I følgende kode har en programmerer gjort en feil:
num = 10
def outer():
num = 5
def inner():
num -= 2
inner()
return num
print(outer())
Hva er galt med denne koden? Finn og rett feilen forfatteren av koden har gjort.
I følgende kode har en programmerer gjort en feil:
num = 3
def outer():
num += 1
tst = num
def inner():
tst = tst ** 3
inner()
return tst
print(outer())
Hva er galt med denne koden? Finn og rett feilen forfatteren av koden har gjort.