Если бы я использовал compile()
и exec()
для выполнения некоторого кода, введенного пользователем, могут ли функции или переменные, определенные в коде, быть снова использованы за пределами?
Например:
code = ""
while 1:
line = input("")
if line == "":
break
code += line
exec(compile(code, "code", "exec"))
print(test()+1)
Это не вернет 6
, как я ожидал.Это дает NameError
, но нет проблем с компиляцией или выполнением кода.Нет ошибки, если код является просто строкой, а не вводом.Есть ли способ использовать функцию test()
?