@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()

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

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

Войти через TM ID
Похожие вопросы
Popmechanic Москва
от 100 000 до 150 000 руб.
Panda Media Нижний Новгород
от 70 000 руб.
НЛ Континент Новосибирск
от 60 000 до 100 000 руб.