我编写了以下代码字符串并尝试通过 exec
方法执行它。当我仅在全局模式下运行此代码时,它运行良好。
codeRule = """import math
def fun (n):
data = n
data = data * math.pi
print(data)
return data
dd = fun(n)"""
codeObejct = compile(codeRule, 'sumstring', 'exec')
exec(codeObejct, dict(n = 10))
但是我的用例需要 exec
之外的 dd
值,因此我使用以下参数来获取另一个数据帧内的 dd
值。
loc = {}
exec(codeObejct, dict(n = 10), loc)
dd = loc["dd"]
但是一旦我使用本地,它就会开始给我一个关于 Lib Import 的错误,例如
File "<stdin>", line 1, in <module>
File "sumstring", line 7, in <module>
File "sumstring", line 4, in fun
NameError: name 'math' is not defined
有人可以帮忙解决这个问题吗?
我已经检查了以下问题的答案,但我不知道如何将其适合我的用例。
最佳答案
终于找到解决方案了,
我在 exec
中遗漏了一点。以下是我得到的解决方案,我希望它适用于我的实际用例
codeRule = """import math
def fun (n):
data = n
data = data * math.pi
return data
"""
#export Function
exec (codeRule, globals())
dd = fun(10)
dd
31.41592653589793
关于python - 导入库无法与 exec 函数一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69151112/