Python NameError: "имя 'x' не определено" при использовании внутри цикла for - PullRequest
0 голосов
/ 27 апреля 2019

Я пытаюсь запустить следующий файл в Python 3.7:

Имя файла: mytest.py Содержание:

def test():
    exec("x=2")
    exec("if x==2: print('yes')")
    exec("[l for l in [1,2,3] if l==x]")

if __name__ == "__main__":
    test()

Когда я запускаю команду:

python3mytest.py

первые две строки test () работают нормально.Но в третьей строке выдается следующая ошибка:

NameError: имя 'x' не определено

Ошибка не возникает, если я запускаю содержимое test () непосредственно в оболочке Python илипоместите содержимое test () внутри main .

Обратите внимание, что в моем реальном коде я не знаю заранее имен переменных l и x или кода, который требуется внутри exec,Это просто упрощенный пример.

Ответы [ 2 ]

0 голосов
/ 30 апреля 2019

Мне удалось обойти эту проблему с помощью:

globals()['x'] = 2
exec("[l for l in [1,2,3] if l==x]", globals())

Но это не очень хорошее решение.

0 голосов
/ 27 апреля 2019

Какую версию python вы используете, пробовали те же команды на v3.7, и он хорошо работал

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