同时评估和执行

发布于 2024-09-12 21:22:14 字数 358 浏览 2 评论 0 原文

有没有办法让 python 对字符串进行评估和执行?我有一个文件,其中包含一堆需要计算的表达式,也许是这样的。

f1(ifilter(myfilter,x))
f2(x)*f3(f4(x)+f5(x))

我运行该文件并eval 表达式。

某些表达式可能希望在执行昂贵的操作后保存其工作

y = g(x); h(y)+j(y)

不幸的是,y=g(x) 需要 exec,但获取 h 的值+j 是一个eval。这是如何运作的?

Is there a way to get python to do an evaluation and execution on a string? I have a file which contains a bunch of expressions that need to be calculated, maybe something like this.

f1(ifilter(myfilter,x))
f2(x)*f3(f4(x)+f5(x))

I run through the file and eval the expressions.

Some of the expressions may want to save their work after doing an expensive operation

y = g(x); h(y)+j(y)

Unfortunately, y=g(x) requires an exec, but getting the value of h+j is an eval. How does this work?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

深海蓝天 2024-09-19 21:22:14

尝试使用内置的compile()。当您在单一模式下使用它时,它可以处理您想要的两种情况。例如:

compile('3+4','<dummy>','single')

将返回一个编译后的代码对象。您可以使用 exec() 或 eval() 执行它:

>>> exec(compile('3+4','<dummy>','single'))
7
>>> exec(compile('x=3+4','<dummy>','single'))
>>> print x
7

Try using the builtin compile(). When you use it in single mode it handles both of the cases that you want. For example:

compile('3+4','<dummy>','single')

will return a compiled code object. You can execute it with exec() or eval() :

>>> exec(compile('3+4','<dummy>','single'))
7
>>> exec(compile('x=3+4','<dummy>','single'))
>>> print x
7
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文