Область видимості змінної вказує область, в якій ми можемо отримати доступ до змінної. В Python ми можемо оголошувати змінні у трьох різних областях видимості: локальній, глобальній та нелокальній.
Локальні змінні в Python
Коли ми оголошуємо змінні всередині функції, ці змінні матимуть локальну область видимості. Ми не можемо отримати доступ до них поза межами функції. Ці типи змінних називаються локальними змінними. Наприклад:
|
1 2 3 4 5 6 7 8 9 10 11 |
def greet(): # Локальна змінна message = 'Hello' print('Local', message) greet() # Намагаємося отримати доступ до змінної message поза функцією greet() print(message) |
Результат:
Local Hello
NameError: name 'message' is not defined
Тут змінна message є локальною змінною функцією greet(), тому доступ до неї можливий лише всередині цієї функції. Саме тому в результаті ми побачили повідомлення про помилку, коли спробували отримати доступ до змінної message поза функцією greet().
Для вирішення цієї проблеми ми можемо зробити змінну message глобальною.
Глобальні змінні в Python
В Python змінна, оголошена поза функцією або у глобальній області видимості, називається глобальною змінною. Це означає, що глобальна змінна може бути доступна як всередині, так і зовні функції.
Розглянемо приклад створення глобальної змінної в Python:
|
1 2 3 4 5 6 7 8 9 |
# Оголошуємо глобальну змінну message = 'Hello' def greet(): # Оголошуємо локальну змінну print('Local', message) greet() print('Global', message) |
Результат:
Local Hello
Global Hello
На цей раз ми можемо отримати доступ до змінної message ззовні функції greet(), оскільки це глобальна змінна.
Нелокальні змінні в Python
В Python нелокальні змінні використовуються у вкладених функціях, локальна область видимості яких не визначена. Це означає, що змінна не знаходиться ні в локальній, ні в глобальній області видимості.
Ключове слово nonlocal використовується для створення нелокальних змінних. Наприклад:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# Зовнішня функція def outer(): message = 'local' # Вкладена функція def inner(): # Оголошуємо нелокальну змінну nonlocal message message = 'nonlocal' print("inner:", message) inner() print("outer:", message) outer() |
Результат:
inner: nonlocal
outer: nonlocal
Тут функція inner() є вкладеною функцією. Ми використали ключове слово nonlocal для створення нелокальної змінної. Функцію inner() визначено в області видимості функції outer().
Примітка: Якщо ми змінимо значення нелокальної змінної, зміни відобразяться в локальній змінній.

(20 оцінок, середня: 4,75 з 5)