Python3,eval()的最佳替代品? (作为表达式输入)

时间:2014-02-09 15:37:52

标签: python python-3.x

我正在使用Python 3。

我想问一下最好的方法是如何在不使用eval(input("Input: "))的情况下输入表达式?

我现在是一个简单的用户,所以我需要的是eval是一个代数计算器。

4 个答案:

答案 0 :(得分:3)

如果您是唯一使用该应用的人,因此无需担心安全问题,请继续使用eval()exec()

否则,只需使用安全库来完成您需要的特定任务。例如。 numexpr我想是一个计算器。

答案 1 :(得分:3)

根据您的表达方式的复杂程度,ast.literal_eval可能是更安全的选择。

答案 2 :(得分:1)

how can I input an expression without using eval(input("Input: "))

根本不要使用eval。在Python 3.x中,inputraw_input的替代,因此,您不需要eval。您只需将语句写为input("Input: ")

即可

此外,在Python 2.X中,您应该使用raw_input("Input: ")代替eval(input("Input: "))

答案 3 :(得分:0)

我知道这可能不是您所提问题的确切答案,但这可以帮助其他一些开发人员加快他们的eval的速度。

您可以使用Lupa libraryLua嵌入python中,就像在this benchmark中看到的那样,这是非常快的

查看详细答案Here