gpt4 book ai didi

python - 如何通过另一个文件中定义的变量在文件中使用包含 eval 的函数?

转载 作者:太空宇宙 更新时间:2023-11-04 03:12:29 25 4
gpt4 key购买 nike

假设,我创建了一个 python 文件 (FirstFile.py),其中包含许多函数和其他内容。其中一个函数是这样的(当然是简化了):

def func(string):
assert eval(string)

此外,我还创建了一个 python 文件,它从上述文件中导入 func() 。然后第二个 python 文件尝试执行以下过程:

from FirstFile import func
amk = 1
func("amk == 1")

当第一个文件中有变量“amk”时,没有问题。然而,当变量“amk”在第二个文件中时,如图所示,错误显示:

NameError: name 'amk' is not defined 

你愿意帮我解决这个问题吗?

最佳答案

默认情况下,eval 在当前本地/全局范围内执行,如果你想指定一个不同的环境,你可以这样做:

eval("x == 1", {"x":1})

因此您的函数可以采用可选的 environ 参数:

def func(string, environ=None):
assert eval(string, environ)

然后您可以从传递 locals() 作为环境的其他模块调用该函数:

from FirstFile import func
amk = 1
func("amk == 1", locals())

作为旁注,我建议不要评估任意代码,尤其是当它来自另一个源/模块时,因为它可能意外包含有害代码。

关于python - 如何通过另一个文件中定义的变量在文件中使用包含 eval 的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37534046/

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