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

更好地“尝试”某些东西并捕获异常,或者测试是否有可能首先避免异常?

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

更好地“尝试”某些东西并捕获异常,或者测试是否有可能首先避免异常?

你应该更喜欢

try/except
if/else
如果结果

  • 加快速度(例如,通过防止额外的查询)
  • 更清晰的代码(行数更少/更易于阅读)

通常,这些并存。


加速

如果尝试通过以下方式在长列表中查找元素:

try:    x = my_list[index]except IndexError:    x = 'NO_ABC'

index
可能在列表中并且通常不引发IndexError时,尝试除外是最好的选择。这样一来,您无需再进行额外的查找
if index <len(my_list)

Python鼓励使用异常, 可以使用Dive Into
Python中
的短语来 处理 异常 。您的示例不仅(优美地)处理异常,而不是让其 静默通过
,而且仅在未找到索引的 特殊 情况下才发生 异常 (因此,单词 异常 !)。


清洁代码

Python的官方文档提到了EAFP: 比起许可更容易获得宽恕 ,Rob
Knight指出 捕获错误而不是避免错误 可以使代码
简洁,更易于阅读。他的示例如下所示:

更糟 (LBYL“跳前先看”)

#check whether int conversion will raise an errorif not isinstance(s, str) or not s.isdigit():    return Noneelif len(s) > 10:    #too many digits for int conversion    return Noneelse:    return int(s)

更好 (EAFP:寻求宽恕比获得许可更容易)

try:    return int(s)except (TypeError, ValueError, OverflowError): #int conversion failed    return None


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

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

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