В тази статия ще научите за глобалната ключова дума, глобалната променлива и кога да използвате глобални ключови думи.
Преди да прочетете тази статия, уверете се, че имате някои основи на глобалните, локалните и нелокалните променливи на Python.
Каква е глобалната ключова дума
В Python global
ключовата дума ви позволява да модифицирате променливата извън текущия обхват. Използва се за създаване на глобална променлива и извършване на промени в променливата в локален контекст.
Правила на глобалната ключова дума
Основните правила за global
ключова дума в Python са:
- Когато създаваме променлива във функция, тя по подразбиране е локална.
- Когато дефинираме променлива извън функция, тя по подразбиране е глобална. Не е нужно да използвате
global
ключова дума. - Използваме
global
ключова дума за четене и запис на глобална променлива във функция. - Използването на
global
ключова дума извън функция няма ефект.
Използване на глобална ключова дума
Да вземем пример.
Пример 1: Достъп до глобална променлива от вътре във функция
c = 1 # global variable def add(): print(c) add()
Когато стартираме горната програма, изходът ще бъде:
1
Възможно е обаче да имаме някои сценарии, при които трябва да модифицираме глобалната променлива от функцията.
Пример 2: Модифициране на глобалната променлива от вътрешната страна на функцията
c = 1 # global variable def add(): c = c + 2 # increment c by 2 print(c) add()
Когато стартираме горната програма, изходът показва грешка:
UnboundLocalError: локална променлива 'c', посочена преди присвояване
Това е така, защото можем да осъществим достъп само до глобалната променлива, но не можем да я модифицираме от функцията.
Решението за това е да се използва global
ключовата дума.
Пример 3: Промяна на глобалната променлива от вътре във функция, използвайки глобална
c = 0 # global variable def add(): global c c = c + 2 # increment by 2 print("Inside add():", c) add() print("In main:", c)
Когато стартираме горната програма, изходът ще бъде:
Вътре добавете (): 2 Основно: 2
В горната програма дефинираме c като глобална ключова дума вътре във add()
функцията.
След това, ние увеличаваме променлива век от 1
, т.е. c = c + 2
. След това извикваме add()
функцията. Накрая отпечатваме глобалната променлива c.
Както виждаме, промяна настъпи и в глобалната променлива извън функцията c = 2
,.
Глобални променливи в модулите на Python
В Python създаваме един модул, който config.py
да съхранява глобални променливи и да споделя информация между модулите на Python в рамките на една и съща програма.
Ето как можем да споделяме глобални променливи в модулите на python.
Пример 4: Споделяне на глобална променлива в модулите на Python
Създайте config.py
файл, за да съхранявате глобални променливи
a = 0 b = "empty"
Създайте update.py
файл, за да промените глобалните променливи
import config config.a = 10 config.b = "alphabet"
Създайте main.py
файл, за да тествате промените в стойността
import config import update print(config.a) print(config.b)
Когато стартираме main.py
файла, изходът ще бъде
10 азбука
В по-горе, ние сме създали три файлове: config.py
, update.py
, и main.py
.
Модулът config.py
съхранява глобални променливи на a и b. Във update.py
файла ние импортираме config.py
модула и променяме стойностите на a и b. По същия начин във main.py
файла импортираме config.py
и update.py
модула, и модула. И накрая, отпечатваме и тестваме стойностите на глобалните променливи, независимо дали са променени или не.
Глобално в вложени функции
Ето как можете да използвате глобална променлива в вложената функция.
Пример 5: Използване на глобална променлива в вложената функция
def foo(): x = 20 def bar(): global x x = 25 print("Before calling bar: ", x) print("Calling bar now") bar() print("After calling bar: ", x) foo() print("x in main: ", x)
Резултатът е:
Преди извикване на бара: 20 Повикване на бара сега След обаждане на бара: 20 x основно: 25
В горната програма декларирахме глобална променлива вътре в вложената функция bar()
. Вътрешната foo()
функция x няма ефект от глобалната ключова дума.
Преди и след обажда bar()
, променлива х приема стойността на локална променлива, т.е. x = 20
. Извън foo()
функция, променлива х ще отнеме стойност, дефинирана в bar()
функцията т.е. x = 25
. Това е така, защото използвахме global
ключова дума в x, за да създадем глобална променлива във bar()
функцията (локален обхват).
Ако направите някакви промени в рамките на bar()
функция, промените се появяват извън местния обхвата, т.е. foo()
.