Python UnboundLocalError при обновлении переменной из внешней функции (закрытие)Python

Программы на Python
Ответить
Anonymous
 Python UnboundLocalError при обновлении переменной из внешней функции (закрытие)

Сообщение Anonymous »

Я пытаюсь создать функцию счетчика, которая запоминает свое состояние, но получаю ошибку UnboundLocalError при увеличении счетчика. Кто-нибудь знает, почему?
Минимальный воспроизводимый пример

Код: Выделить всё

def make_counter():
count = 0

def inc(step=1):
if step > 0:
count += step
return count

return inc

c = make_counter()
print(c())
Ошибка

Код: Выделить всё

UnboundLocalError: local variable 'count' referenced before assignment
Я ожидал, что inc() обновит переменную count из make_counter(). Почему Python рассматривает count как локальную внутреннюю переменную inc() и как правильно обновить внешнюю переменную?


Подробнее здесь: https://stackoverflow.com/questions/798 ... ion-closur
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»