Область видимості змінних в Python

 5251

Область видимості змінної вказує область, в якій ми можемо отримати доступ до змінної. В Python ми можемо оголошувати змінні у трьох різних областях видимості: локальній, глобальній та нелокальній.

Локальні змінні в Python

Коли ми оголошуємо змінні всередині функції, ці змінні матимуть локальну область видимості. Ми не можемо отримати доступ до них поза межами функції. Ці типи змінних називаються локальними змінними. Наприклад:

Результат:

Local Hello
NameError: name 'message' is not defined

Тут змінна message є локальною змінною функцією greet(), тому доступ до неї можливий лише всередині цієї функції. Саме тому в результаті ми побачили повідомлення про помилку, коли спробували отримати доступ до змінної message поза функцією greet().

Для вирішення цієї проблеми ми можемо зробити змінну message глобальною.

Глобальні змінні в Python

В Python змінна, оголошена поза функцією або у глобальній області видимості, називається глобальною змінною. Це означає, що глобальна змінна може бути доступна як всередині, так і зовні функції.

Розглянемо приклад створення глобальної змінної в Python:

Результат:

Local Hello
Global Hello

На цей раз ми можемо отримати доступ до змінної message ззовні функції greet(), оскільки це глобальна змінна.

Нелокальні змінні в Python

В Python нелокальні змінні використовуються у вкладених функціях, локальна область видимості яких не визначена. Це означає, що змінна не знаходиться ні в локальній, ні в глобальній області видимості.

Ключове слово nonlocal використовується для створення нелокальних змінних. Наприклад:

Результат:

inner: nonlocal
outer: nonlocal

Тут функція inner() є вкладеною функцією. Ми використали ключове слово nonlocal для створення нелокальної змінної. Функцію inner() визначено в області видимості функції outer().

Примітка: Якщо ми змінимо значення нелокальної змінної, зміни відобразяться в локальній змінній.

Оцінити статтю:

1 Зірка2 Зірки3 Зірки4 Зірки5 Зірок (20 оцінок, середня: 4,75 з 5)
Завантаження...

Залишити відповідь

Ваш E-mail не буде опублікований. Обов'язкові поля відмічені *