Глобальне ключове слово 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)

Коли ми запускаємо вищезазначену програму, результат буде:

 Всередині 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().

Цікаві статті...