python - 如何使用 eval 运行其他带参数的 python 脚本?
问题描述
我有一个包含代码的 python 文件 a.py:
var=50*10
data= # eval here to call add function of b.py with argument var
print(data)
b.py 包含代码:
def add(h):
res=h+10
return res
现在我想要的是使用 eval 从带有参数的 a.py python 脚本调用 b.py 的运行函数并获得结果。但我无法理解 eval 在这里的工作原理。我看过 python 官方文档,它们超出了我的理解。或者如果不是 eval 那么其他选项是什么(使用其他文件作为模块除外)
解决方案
eval()
是一种仅用于评估表达式的方法。因此,您不能使用其他语句。因为import
是一个语句,所以不能在eval()
.
其他选项是什么(使用其他文件作为模块除外)
exec()
与 import 一起使用,因此exec()
和的组合eval()
起作用:
var = 50 * 10
exec("import b")
data = eval("b.add(var)")
print(data)
甚至exec()
没有eval()
:
var = 50 * 10
exec("import b\ndata=b.add(var)")
print(data)
笔记:
- IDE 可能会抱怨
data
在最后一个版本的代码中未定义 exec()
甚至比eval()
推荐阅读
- python - 我无法使此代码正常工作,我收到错误“TypeError:”
'需要字符串作为左操作数,而不是列表' - unity3d - Azure 远程渲染错误 - EXEC:致命错误 C1007:“p2”中无法识别标志“-ssa-cfg-jt-”
- python - 如何轻松降级python版本?
- android - 从 firebase 检索数据在特定适配器中返回 null
- javascript - 获取 base Url ,删除手册
- python - Python - 尝试使用 pandas 跳过 n 行,直到达到特定记录
- lua - 使用 Lua 在 Splash 中查看返回的结果
- travis-ci - Travis CLI:使用“travis encrypt”加密返回 — 找不到资源 ({"file":"not found"})
- arduino - 为什么这会出现在我的串行监视器上?
- xamarin - 如何从 Xamarin.ios 知道哪个页面处于活动状态