В python выдаёт ошибку: local variable 'he' referenced before assignment ошибка

def convert():
    he=8
    p=2
    v=9
    d=1
    j=0
    def hisla():
        print("текст")
        he=(he-7)
    hisla()
    print(he)
convert()

Как можно исправить? Заранее спасибо:)


Ответы (2 шт):

Автор решения: entithat

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

def convert():
    he=8
    p=2
    v=9
    d=1
    j=0

    def hisla():
        print("текст")
        nonlocal he
        he = (he - 7)

    hisla()
    print(he)

convert()
→ Ссылка
Автор решения: Extend

Создавая вложенный метод внутри него создается локальная область видимости, и при попытке присвоить созданной переменной в методе уровнем выше иное значение таким образом: he = he - 7 Компилятор пытается найти ее во вложенном методе, и соответственно не находит его. nonlocal "расширяет" область видимости, и за счет этого переменная становится доступна для манипуляций.

→ Ссылка