В този урок ще научите за глобалните променливи на Python, локалните променливи, нелокалните променливи и къде да ги използвате.
Видео: Локални и глобални променливи на Python
Глобални променливи
В Python променлива, декларирана извън функцията или в глобален обхват, е известна като глобална променлива. Това означава, че глобалната променлива може да бъде достъпна във или извън функцията.
Нека видим пример за това как се създава глобална променлива в Python.
Пример 1: Създайте глобална променлива
x = "global" def foo(): print("x inside:", x) foo() print("x outside:", x)
Изход
x вътре: глобално x вън: глобално
В горния код създадохме x като глобална променлива и дефинирахме a foo()
за отпечатване на глобалната променлива x. И накрая, извикваме foo()
който ще отпечата стойността на x.
Какво ще стане, ако искате да промените стойността на x във функция?
x = "global" def foo(): x = x * 2 print(x) foo()
Изход
UnboundLocalError: локална променлива 'x', посочена преди присвояване
Резултатът показва грешка, защото Python третира x като локална променлива и x също не е дефиниран вътре foo()
.
За да работи това, използваме global
ключовата дума. Посетете Python Global Keyword, за да научите повече.
Локални променливи
Променлива, декларирана в тялото на функцията или в локалния обхват, е известна като локална променлива.
Пример 2: Достъп до локална променлива извън обхвата
def foo(): y = "local" foo() print(y)
Изход
NameError: името 'y' не е дефинирано
Резултатът показва грешка, защото се опитваме да осъществим достъп до локална променлива y в глобален обхват, докато локалната променлива работи само вътре foo()
или локален обхват.
Нека да видим пример за това как се създава локална променлива в Python.
Пример 3: Създайте локална променлива
Обикновено декларираме променлива във функцията, за да създадем локална променлива.
def foo(): y = "local" print(y) foo()
Изход
местни
Нека да разгледаме по-ранния проблем, където x беше глобална променлива и искахме да модифицираме x вътре foo()
.
Глобални и локални променливи
Тук ще покажем как да използваме глобални променливи и локални променливи в един и същ код.
Пример 4: Използване на глобални и локални променливи в един и същ код
x = "global " def foo(): global x y = "local" x = x * 2 print(x) print(y) foo()
Изход
глобален глобален локален
В горния код декларираме x като глобална, а y като локална променлива в foo()
. След това използваме оператор *
за умножение, за да модифицираме глобалната променлива x и отпечатваме както x, така и y.
След извикване на foo()
, стойността на x става, global global
защото използвахме x * 2
за отпечатване два пъти global
. След това, ние отпечата стойността на локална променлива у т.е. local
.
Пример 5: Глобална променлива и Локална променлива с едно и също име
x = 5 def foo(): x = 10 print("local x:", x) foo() print("global x:", x)
Изход
локално x: 10 глобално x: 5
В горния код използвахме едно и също име x както за глобална променлива, така и за локална променлива. Получаваме различен резултат, когато отпечатваме една и съща променлива, защото променливата е декларирана и в двата обхвата, т.е. локалния обхват вътре foo()
и глобалният обхват отвън foo()
.
Когато отпечатваме променливата вътре, foo()
тя извежда local x: 10
. Това се нарича локален обхват на променливата.
По същия начин, когато отпечатваме променливата извън foo()
, тя извежда глобален x: 5. Това се нарича глобален обхват на променливата.
Нелокални променливи
Нелокалните променливи се използват в вложени функции, чийто локален обхват не е дефиниран. Това означава, че променливата не може да бъде нито в локалния, нито в глобалния обхват.
Нека видим пример за това как се използва нелокална променлива в Python.
Използваме nonlocal
ключови думи за създаване на нелокални променливи.
Пример 6: Създайте нелокална променлива
def outer(): x = "local" def inner(): nonlocal x x = "nonlocal" print("inner:", x) inner() print("outer:", x) outer()
Изход
вътрешен: нелокален външен: нелокален
В горния код има вложена inner()
функция. Използваме nonlocal
ключови думи, за да създадем нелокална променлива. В inner()
функция се определя в обхвата на друга функция outer()
.
Забележка : Ако променим стойността на нелокална променлива, промените се появяват в локалната променлива.