ast.literal_eval(None) 与 ast.literal_eval('None') 的区别

3

从ast文档中,我可以得到以下信息:

安全地评估表达式节点或包含Python字面值或容器显示的Unicode或Latin-1编码字符串。提供的字符串或节点只能由以下Python文字结构组成:字符串、数字、元组、列表、字典、布尔值和None。

从这个描述来看,ast.literal_eval(None)应该可以工作。

然而,在Python 2.7中,当我尝试做ast.literal_eval(None)时,会出现ValueError: malformed string错误。如果我使用ast.literal_eval('None')则不会出现此问题。

有人能解释一下为什么吗?我已经查看了关于ast.literal_eval和malformed string的其他StackOverflow问题,但没有一个问题解决了这个问题。

1个回答

3

None既不是字符串,也不是表达式节点,因此没有理由认为它是ast.literal_eval()的有效参数。


谢谢Ignacio,这帮助我意识到我犯了什么错误。我误读了文档。特别是我漏掉了它必须是一个字符串或一个节点的要求。感谢你的帮助,并温和地指出了相当显而易见的答案。 - H. Williams

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接