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:

pythonnum = 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:

pythonnum = 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:

pythonnum = 1

def func():
  num += 2 # wypisze błąd

Błąd jest spowodowany tym, że wyrażenie num += 2 reprezentuje następujący zapis:

pythonnum = 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.

Задание 1

Jaki będzie wynik wykonania następującego kodu:

pythontst = '12'

def func():
  tst = 12
  return tst
  
print(tst)
Задание 2

Jaki będzie wynik wykonania następującego kodu:

pythontst = 'abc'

def func():
  tst = tst.upper()
  return tst

func()
print(tst)
Задание 3

Jaki będzie wynik wykonania następującego kodu:

pythontst = 'abc'

def func():
txt = tst.upper()
return txt
    
print(func())
print(tst)