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

为什么例外是可迭代的?

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

为什么例外是可迭代的?

请注意,发生的情况与任何类型的隐式字符串转换等均无关,而是因为Exception类实现了__getitem
__(),并使用它来返回args元组(ex.args)中的值。您可以通过将整个字符串作为迭代中的第一个也是唯一的项目,而不是遍历字符串而得到的每个字符的结果来看到这一点。

这也让我感到惊讶,但是考虑到这一点,我想这是出于向后兼容的原因。以前(1.5之前的版本)的Python缺少当前类的异常层次结构。相反,将抛出字符串,并使用(通常是)元组参数表示应传递给处理块的任何详细信息。即:

try:    raise "something failed", (42, "some other details")except "something failed", args:    errCode, msg = args    print "something failed.  error pre %d: %s" % (errCode, msg)

这样做似乎是为了避免破坏期望参数为元组的1.5之前的代码,而不是不可迭代的异常对象。上面链接的“致命损坏”部分中有一些使用IOError的示例。

字符串异常已经废弃了一段时间,并且在Python 3中逐渐消失。我现在已经检查了Python 3如何处理异常对象,并且看起来它们在那里不再可迭代:

>>> list(Exception("test"))Traceback (most recent call last):  File "<stdin>", line 1, in <module>TypeError: 'Exception' object is not iterable

[编辑]检查python3的行为



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

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

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