Глобална ключова дума на Python (с примери)

В тази статия ще научите за глобалната ключова дума, глобалната променлива и кога да използвате глобални ключови думи.

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

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