Простір імен та область видимості в Python

 5137

Простір імен — це область коду, в якій знаходиться набір ідентифікаторів. Він використовується для зберігання значень змінних та інших об’єктів, пов’язаних із певними іменами (ідентифікаторами).

Область видимості — це частина програми, з якої можна отримати доступ до простору імен напряму без будь-якого префіксу.

Типи просторів імен в Python

Python має три типи просторів імен:

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

   Глобальний простір імен створюється в кожному модулі. Модулі можуть мати різні функції та класи.

   Локальний простір імен створюється під час виклику функції, в якій визначено імена.

Різні простори імен ізольовані. Тому однакове ім’я, яке може існувати в різних модулях, не викликає конфлікту імен в програмі. Аналогічно і у випадку з класами. Наступна діаграма ілюструє цю концепцію.

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

Попри те, що є різні унікальні простори імен, ми не можемо отримати доступ до всіх них із кожної частини програми. Тут у гру входить таке поняття, як область видимості.

Область видимості — це частина програми, з якої можна отримати доступ до простору імен напряму без будь-якого префіксу.

Існує як мінімум три вкладені області видимості:

   Область видимості функції з локальними іменами.

   Область видимості модуля з глобальними іменами.

   Вбудована область видимості з вбудованими іменами.

Коли всередині функції створюється посилання, ім’я шукається у локальному просторі імен, потім у глобальному просторі імен і, нарешті, у вбудованому просторі імен.

Якщо функція знаходиться всередині іншої функції, нова область видимості міститься в локальній області видимості (функції).

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

Результат:

15
25
35

Тут є три окремі простори імен: глобальний простір імен, локальний простір імен всередині зовнішньої функції та локальний простір імен всередині внутрішньої функції.

   global_var — знаходиться у глобальному просторі імен, має значення 15.

   outer_var — знаходиться в локальному просторі імен функції outer_function(), має значення 25.

   inner_var — знаходиться у вкладеному локальному просторі імен функції inner_function(), має значення 35.

Під час виконання коду спочатку виводиться глобальна змінна global_var, а потім локальні змінні: outer_var та inner_var під час виклику зовнішньої та внутрішньої функцій, відповідно.

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

Результат:

15
35

Під час виклику my_function() ключове слово global використовується для вказівки того, що global_var є глобальною змінною, та її значення змінюється на 35.

Спочатку ми виводимо global_var зі значенням 15, потім викликаємо функцію, і глобальна змінна змінюється на 35 всередині цієї функції. І, нарешті, виводимо змінене значення змінної global_var на екран.

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

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

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

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