不同版本的 ast 有不同的行为:
蟒蛇2, 蟒蛇3.7:
ast.literal_eval("3 -1")
>> ValueError: malformed node or string
蟒蛇3.4
ast.literal_eval("3 -1")
>> 2
有没有关于它的文档?
这记录在错误 31778 中。 更严格行为的基本原理是,旧行为可能导致某些值被错误地计算:例如,日期字符串2019-12-18
可以作为算术表达式进行计算,而不是保留为字符串。
不评估表达式更符合记录的行为
提供的字符串或节点只能包含以下 Python 文本结构:字符串、字节、数字、元组、列表、字典、集合、布尔值和 None。
这可用于安全地评估包含来自不受信任来源的 Python 值的字符串,而无需自己解析值。它无法计算任意复杂的表达式,例如涉及运算符或索引。
根据错误报告。