Sobes.tech
Back to questions
Junior — Middle
58

Можно ли объяснить концепцию nonlocal и как она используется в Python?

Answer from AI

sobes.tech AI

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

Обычно, если внутри вложенной функции присвоить значение переменной, Python считает её локальной. Чтобы изменить переменную из внешней функции, нужно объявить её как nonlocal.

Пример:

def outer():
    count = 0
    def inner():
        nonlocal count
        count += 1
        print(count)
    inner()
    inner()

outer()
# Вывод:
# 1
# 2

Без nonlocal попытка изменить count внутри inner вызвала бы ошибку, так как Python бы считал count локальной переменной, а она не была инициализирована внутри inner.

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