Урок 9: Области видимости переменных и замыкания в Python

Области видимости переменных и замыкания в Python

Краткое введение

Область видимости переменной определяет контекст в коде, где эта переменная доступна. Python поддерживает различные области видимости: локальную, внешнюю (enclosing), глобальную и встроенную. Замыкания в Python позволяют сохранять состояние внешних переменных, даже когда внешняя функция завершила выполнение.

Теоретическая часть

Области видимости переменных

В Python существует правило LEGB, которое определяет порядок, в котором интерпретатор ищет переменную: Local → Enclosed → Global → Built-in. Локальные переменные определены внутри функции и доступны только в её контексте. Если переменная не найдена локально, интерпретатор ищет её в области видимости внешних функций (Enclosed), затем в глобальной области видимости (Global) и, наконец, среди встроенных имен (Built-in).

Замыкания

Замыкание в Python возникает, когда вложенная функция ссылается на переменные из своей внешней области видимости. Интерпретатор Python сохраняет эти переменные, что позволяет вложенной функции использовать их даже после того, как выполнение внешней функции было завершено.

Примеры кода

# Пример области видимости переменных
x = 'глобальная x'

def test():
 y = 'локальная y'
 print(y)
 print(x)

test()

# Пример замыкания
def outer():
 z = 'внешняя z'
 def inner():
 print(z)
 return inner

closure = outer()
closure()

Практические задания

Определите функцию, содержащую локальные переменные, и попробуйте обратиться к ним извне функции. Создайте замыкание, которое использует переменные из внешней функции, и продемонстрируйте его работу.

Решение задания

# Работа с локальной переменной
def func():
 local_var = 'локальная переменная'
 print(local_var)

func()
# print(local_var) # Ошибка: local_var не определена в этой области видимости

# Создание и использование замыкания
def make_multiplier(x):
 def multiplier(n):
 return x * n
 return multiplier

double = make_multiplier(2)
print(double(5)) # Выведет 10

© 2024 realschule.ru

Категория: Python с нуля | Добавил: Admin (07.03.2024)
Просмотров: 135 | Рейтинг: 1.0/1
Всего комментариев: 0
Имя *:
Email *:
Код *: