栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么ast.literal_eval('5 * 7')失败?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么ast.literal_eval('5 * 7')失败?

ast.literal_eval()
接受
+
评估的数据,因为
5+2j
(复数*)是有效的文字。同样适用于
-
。为了使代码简单,没有尝试排除
+
或将其
-
作为二进制运算符。

不允许其他运算符;该函数 应该 只接受文字,不接受表达式。

换句话说,这

5 +7
是一个错误,但如果不中断对构造复数的支持,就很难修复该错误。该实现将使用范围限制为数字,一元
+
-
或其他二进制运算符(因此,您不能使用它们来连接列表或产生集合差)。

另请参阅几个相关的Python Bugtracker 条目:#25335
ast.literal_eval无法解析
以前


+”表示的数字
,#22525
ast.literal_eval()未按文档所述执行操作,
并且#4907 ast.literal_eval无法正确处理复数


*从技术上讲

2j
是有效的文字;Python解析
5+2j
int(5) binop(+) complex(0, 2)
,并且仅在以后
complex(5, 2)
实际执行加法运算时才从结果中生成一个对象。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/638516.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号