«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как получить доступ к нелокальным переменным из вложенных функций в Python?

Как получить доступ к нелокальным переменным из вложенных функций в Python?

Опубликовано 8 ноября 2024 г.
Просматривать:530

How to Access Nonlocal Variables from Nested Functions in Python?

Доступ к нелокальным переменным во вложенных областях функций

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

Чтобы решить эту проблему, у вас есть несколько вариантов:

1. Использование ключевого слова «nonlocal» (Python 3):

Для Python 3 и более поздних версий ключевое слово nonlocal позволяет повторно связывать нелокальные переменные внутри вложенных функций.

def outer():
    ctr = 0

    def inner():
        nonlocal ctr
        ctr  = 1

    inner()

2. Косвенный доступ через списки (Python 2 и 3):

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

ctr = [0]

def inner():
    ctr[0]  = 1

3. Использование глобальных переменных (не рекомендуется):

Хотя использование global может разрешить доступ к переменным из охватывающих областей, обычно это не рекомендуется из-за потенциальных конфликтов и проблем с читаемостью кода.

def outer():
    global ctr
    ctr = 0

    def inner():
        ctr  = 1

Выбор подходящего решения зависит от вашей конкретной версии Python и особенностей дизайна вашего кода.

Заявление о выпуске Эта статья перепечатана по адресу: 1729507041. Если есть какие-либо нарушения, свяжитесь с [email protected], чтобы удалить их.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3