Niuanse pracy z zakresami widoczności w Pythonie
Rozważmy ważne niuanse pracy ze zmiennymi lokalnymi i globalnymi.
Załóżmy, że mamy zmienną globalną num.
Stwórzmy funkcję func,
która będzie wypisywać globalną num
w konsoli:
num = 1
def func():
print(num)
func() # wypisze 1
A teraz zadeklarujmy lokalną num w
linii poniżej funkcji print. Po
wykonaniu kodu w konsoli pojawi się błąd.
Dzieje się tak, ponieważ Python
wewnątrz funkcji postrzega num
tylko jako zmienną lokalną, która
jeszcze nie została zadeklarowana:
num = 1
def func():
print(num) # wypisze błąd
num = 2
Przepiszmy teraz kod wewnątrz funkcji
tak, aby wartość zmiennej num
zwiększyła się o 2:
num = 1
def func():
num += 2 # wypisze błąd
Błąd jest spowodowany tym, że wyrażenie num += 2
reprezentuje następujący zapis:
num = num + 2
Jednak sama zmienna lokalna, do której następuje dodanie, jeszcze nie jest zadeklarowana. I odpowiednio Python wypisuje błąd, ponieważ nie można dodać liczby do nieistniejącej wartości.
Jaki będzie wynik wykonania następującego kodu:
tst = '12'
def func():
tst = 12
return tst
print(tst)
Jaki będzie wynik wykonania następującego kodu:
tst = 'abc'
def func():
tst = tst.upper()
return tst
func()
print(tst)
Jaki będzie wynik wykonania następującego kodu:
tst = 'abc'
def func():
txt = tst.upper()
return txt
print(func())
print(tst)