@avion123678

Ошибка в Python?

Здравствуйте, когда код исполняется все прекрасно
length = 100
def len():
    while True:
        if length == 0:
            break
        print(length)

len()

Но когда так, не исполняется, выводит ошибку "UnboundLocalError: local variable 'length' referenced before assignment"
length = 100
def len():
    while True:
        length -= 1
        if length == 0:
            break
        print(length)

len()

В чем проблема?
  • Вопрос задан
  • 443 просмотра
Решения вопроса 1
p00h
@p00h
Фехтовальщик-стропальщик
Python использует простое правило: если внутри функции есть присваивание, то переменная считается локальной. Именно поэтому при сравнении используется глобальная переменная, а в случае уменьшения на единицу интерпретатор рассматривает переменную как локальную и не находит ее инициализации.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы