用空格分隔的数字字符串上的 ast 文字评估



不同版本的 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 值的字符串,而无需自己解析值。它无法计算任意复杂的表达式,例如涉及运算符或索引。

根据错误报告。

最新更新