假设我得到一个字符串到eval
temperature*x
Run Code Online (Sandbox Code Playgroud)
我有两组变量-简单的一组:
easy_ns = {'x':3, 'y':4}
Run Code Online (Sandbox Code Playgroud)
还有一个更难的:
harder = ['temperature', 'sumofall']
Run Code Online (Sandbox Code Playgroud)
每种计算都需要花费大量时间,除非它们是用户提供的表达式的一部分,否则我不想计算它们
例如,除非我知道这是必需的,否则我不想开始检测“温度”
我的命名空间中可能有一些“便宜”的变量,但我想尽可能推迟其他一些变量
如何在评估之前从评估字符串中获取变量列表
我知道我可以尝试:eval()除外:我会得到:
NameError: name 'temperature' is not defined
Run Code Online (Sandbox Code Playgroud)
有没有一种提取确切变量名称的pythonic方法?
有没有一种好的方法可以为延迟评估构建名称空间?
就像是
namespace = {'x':3, 'y':4, 'temperature':lazy_temperature_function}
Run Code Online (Sandbox Code Playgroud)
这样,只有当我的表情被评估
res=eval('temperature*x')
Run Code Online (Sandbox Code Playgroud)
我的懒惰温度函数叫做
而且是当然的-我绝对必须使用“EVAL” -这就是为什么我已经发布了这些问题
场景是我得到一个包含键和值集的输入文件,然后用户可以提供他要我根据这些值和一些我不希望计算的生成变量的组合来计算的表达式,除非用户将它们包括在内在他/她的表情中
python ×1