Nuancer af arbejde med scopes i Python
Lad os overveje vigtige nuancer af arbejde med lokale og globale variable.
Antag at vi har en global variabel num.
Lad os oprette en funktion func,
som vil udskrive den globale num
i konsollen:
num = 1
def func():
print(num)
func() # vil udskrive 1
Og lad os nu deklarere en lokal num på
linjen under funktionen print. Efter
udførelse af koden vil der vises en fejl i konsollen.
Dette sker fordi Python
inden i funktionen opfatter num
kun som en lokal variabel, som
endnu ikke er blevet deklareret:
num = 1
def func():
print(num) # vil udskrive fejl
num = 2
Lad os nu omskrive koden inde i funktionen
så værdien af variablen num
forøges med 2:
num = 1
def func():
num += 2 # vil udskrive fejl
Fejlen er forårsaget af, at udtrykket num += 2
repræsenterer følgende notation:
num = num + 2
Imidlertid er den lokale variabel selv, som der lægges til, endnu ikke deklareret. Og følgelig viser Python en fejl, da det ikke er muligt at lægge et tal til en ikke-eksisterende værdi.
Hvad bliver resultatet af udførelsen af følgende kode:
tst = '12'
def func():
tst = 12
return tst
print(tst)
Hvad bliver resultatet af udførelsen af følgende kode:
tst = 'abc'
def func():
tst = tst.upper()
return tst
func()
print(tst)
Hvad bliver resultatet af udførelsen af følgende kode:
tst = 'abc'
def func():
txt = tst.upper()
return txt
print(func())
print(tst)