gpt4 book ai didi

python - 解析循环中仅使用一次的代码

转载 作者:行者123 更新时间:2023-11-28 22:45:36 24 4
gpt4 key购买 nike

我正在用 Python 编写可用于求解方程的代码。用户必须首先通过 raw_input() 输入代码,然后使用 eval() 为循环中的每个 x 计算 y,如下所示:

#some imports (math) and other irrelevant code
Code = raw_input('please enter your equation')
Low = raw_input('please enter the lowest number in the domain')
High = raw_input('please enter the highest number in the domain')
X = Low
While X <= High:
Y = eval(code)
#complicated code to solve equation
X += #number depending on the amount of decimals
#simpler code to print the result

问题是对每个循环使用 eval() 解析输入代码非常慢。有没有办法只解析一次代码,然后在程序的其余部分将其用作函数?

最佳答案

您可以使用 compiler.compile() 预先编译表达式(deprecated 自 Python v2.6 起)。

使用 Python 3.x:

另请查看:Python: Way to speed up a repeatedly executed eval statement?

编辑

一些例子:

>>> expr = 'x*x + 2*x + 1'
>>> expr_obj = compile(expr, '', 'eval')
>>> x = 1
>>> y = eval(expr)

现在

>>> y
4
>>> x = 2
>>> y = eval(expr)
>>> y
9

compileeval(和 exec)的低级版本。它不会评估/执行您的表达式/语句,但会返回一个可以执行此操作的代码对象。


PS 作为一般规则,当对用户提交的字符串使用 eval 时,您必须非常小心您接受的内容(这是一个潜在的安全漏洞)。

关于python - 解析循环中仅使用一次的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28428360/

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