gpt4 book ai didi

python - 将 exec()/compile() 与用户输入一起使用

转载 作者:太空宇宙 更新时间:2023-11-03 21:44:23 24 4
gpt4 key购买 nike

如果我使用compile()exec()来执行用户输入的一些代码,代码中定义的函数或变量可以在外部再次使用吗?
例如:

code = ""
while 1:
line = input("")
if line == "":
break
code += line

exec(compile(code, "code", "exec"))
print(test()+1)

这不会像我期望的那样返回6。它给出了 NameError 但编译或执行代码没有问题。如果 code 只是一个字符串而不是输入,则不会出现错误。有没有办法使用函数test()

最佳答案

变量名称解析和作用域是在编译时完成的,因此如果在运行时使用 exec 定义变量/函数名称,则需要使用 locals() dict 来引用它:

exec(compile(code, "code", "exec"))
print(locals()['test']()+1)

关于python - 将 exec()/compile() 与用户输入一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52600980/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com