Доступ к нелокальным переменным во вложенных областях функций
В 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 и особенностей дизайна вашего кода.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3