Нюанси на работа с обхвати на видимост в Python
Нека разгледаме важни нюанси на работа с локални и глобални променливи.
Да предположим, че имаме глобална променлива num.
Нека създадем функция func,
която ще отпечатва глобалната num
в конзолата:
num = 1
def func():
print(num)
func() # ще изведе 1
А сега нека декларираме локална num на
ред под функцията print. След
изпълнение на кода в конзолата ще се изведе грешка.
Това се случва, защото Python
вътре във функцията възприема num
само като локална променлива, която
все още не е била декларирана:
num = 1
def func():
print(num) # ще изведе грешка
num = 2
Сега нека пренапишем кода вътре във функцията
така, че стойността на променливата num
да се увеличи с 2:
num = 1
def func():
num += 2 # ще изведе грешка
Грешката е причинена от факта, че изразът num += 2
представлява следния запис:
num = num + 2
Въпреки това, самата локална променлива, към която се прибавя, все още не е декларирана. И съответно Python извежда грешка, тъй като не може да се прибави число към несъществуваща стойност.
Какъв ще бъде резултатът от изпълнението на следния код:
tst = '12'
def func():
tst = 12
return tst
print(tst)
Какъв ще бъде резултатът от изпълнението на следния код:
tst = 'abc'
def func():
tst = tst.upper()
return tst
func()
print(tst)
Какъв ще бъде резултатът от изпълнението на следния код:
tst = 'abc'
def func():
txt = tst.upper()
return txt
print(func())
print(tst)