Глобални, локални и нелокални променливи на Python (с примери)

В този урок ще научите за глобалните променливи на 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().

Забележка : Ако променим стойността на нелокална променлива, промените се появяват в локалната променлива.

Интересни статии...