【发布时间】:2017-03-27 20:02:15
【问题描述】:
为什么5 * 7 的文字评估会失败,而5 + 7 不会?
import ast
print(ast.literal_eval('5 + 7'))
# -> 12
print(ast.literal_eval('5 * 7'))
# ->
Traceback (most recent call last):
...
ValueError: malformed node or string: <_ast.BinOp object at ...>
documentation 没有解释这一点。
我在 SO:Getting the result of a string 上回答了这个问题后发现了这个问题。
【问题讨论】:
-
ast.literal_eval没有普通的eval强大,因此也没有那么危险。我想这使它成为两个评估中较小的一个...... :)
标签: python eval abstract-syntax-tree