У цій статті ви дізнаєтесь про глобальне ключове слово, глобальну змінну та про те, коли використовувати глобальні ключові слова.
Перш ніж читати цю статтю, переконайтесь, що ви ознайомилися з деякими основами глобальної, локальної та нелокальної змінних 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)
Коли ми запускаємо вищезазначену програму, результат буде:
Всередині add (): 2 В основному: 2
У наведеній вище програмі ми визначаємо c як глобальне ключове слово всередині add()
функції.
Потім ми збільшуємо змінну c на 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 х в основному: 25
У наведеній вище програмі ми оголосили глобальну змінну всередині вкладеної функції bar()
. Усередині foo()
функції x не впливає на глобальне ключове слово.
До і після виклику bar()
змінна x приймає значення локальної змінної, тобто x = 20
. Поза foo()
функцією змінна x прийме значення, визначене у bar()
функції, тобто x = 25
. Це тому, що ми використали global
ключове слово в x для створення глобальної змінної всередині bar()
функції (локальна область).
Якщо ми робимо якісь зміни всередині bar()
функції, то зміни з’являються поза локальною сферою, тобто foo()
.