Как исправить два объекта с одинаковым именем «локальная переменная, на которую ссылаются перед присваиванием» Ошибка в Python - PullRequest
1 голос
/ 14 мая 2019

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

UnboundLocalError: локальная переменная 'demo01', на которую ссылается перед присваиванием

Ошибка возникает здесь

def demo01():
    return 5

def demo02():
    demo01=demo01()

demo02()

UnboundLocalError: local variable 'demo01' referenced before assignment

Но эти фрагменты хороши

def demo01():
    return 5

def demo02():
    demo01=demo01()

demo01 = demo01()

def demo01():
    return 5

def demo02():
    demo02=demo01()

demo02()

1 Ответ

0 голосов
/ 14 мая 2019

Когда существует существующая переменная, создание новой под этим именем перезапишет существующую переменную, например:

print = 2 # change the print() function to a variable named 2
print('string')

даст

TypeError: 'int' object is not callable

возвращаясь к вашему коду:

demo01 = lambda: 5 # this is more of an advanced keyword, feel free to do it your way

def demo02():
    demo01 = demo01() # "demo01 = [val]" tells python to assign a value to demo01, and you cannot assign a variable to the same variable:
variable = variable

, очевидно, невозможно; дает

NameError: name 'variable' is not defined

при использовании в глобальном состоянии и UnboundLocalError при использовании в локальном (класс или функция).

Ваши имена переменных и другие переменные, если таковые имеются, использованные во время присваивания НЕ ДОЛЖНЫ ИЛИ БЫТЬ ССЫЛКИ НА ПЕРЕМЕННЫЕ, КОТОРЫЕ ВЫ НАСТОЯЩИМ НАЗНАЧАЕТЕ .

Если вам действительно нужно использовать одну и ту же переменную:

variable_ = variable()
variable = variable_
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...