Нијанси на работа со опсези на видливост во Python

Да ги разгледаме важните нијанси на работа со локални и глобални променливи.

Нека имаме глобална променлива num. Ајде да создадеме функција func, која ќе ја прикажува глобалната num во конзола:

pythonnum = 1

def func():
  print(num)

func() # ќе испише 1

А сега да декларираме локална num на линија под функцијата print. После извршувањето на кодот во конзолата ќе се испише грешка. Ова се случува затоа што Python внатре во функцијата ја перцепира num само како локална променлива, која сè уште не е декларирана:

pythonnum = 1

def func():
  print(num) # ќе испише грешка
  num = 2

Ајде сега да го преработиме кодот внатре во функцијата така што вредноста на променливата num ќе се зголеми за 2:

pythonnum = 1

def func():
  num += 2 # ќе испише грешка

Грешката е предизвикана од тоа што изразот num += 2 претставува следнава запишување:

pythonnum = num + 2

Сепак, самата локална променлива, на која се додава сè уште не е декларирана. И соодветно, Python испишува грешка, бидејќи не може да се додаде број на непостоечка вредност.

Задание 1

Каков ќе биде резултатот од извршувањето на следниот код:

pythontst = '12'

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

Каков ќе биде резултатот од извршувањето на следниот код:

pythontst = 'abc'

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

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

Каков ќе биде резултатот од извршувањето на следниот код:

pythontst = 'abc'

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