python - 有异常的三元运算符?
问题描述
我经常发现自己在编写代码,例如:
try:
name = names[2]
except IndexError:
name = names[1]
或许:
try:
name = Names.first
except AttributeError:
name = Names.default
由于三元运算符有很好的语法,我想知道异常是否有类似的东西?就像是:
name = names[2] except IndexError names[1]
name = Names.first except AttributeError Names.default
符合以下三元运算符风格:
name = names[2] if names[2] else names[1]
解决方案
没有处理异常的表达式(尽管有一个被拒绝的 PEP试图引入一个)。但是,您可以首先避免异常。
name = names[2:0:-1][0] # At the cost of making a small temporary list object
假设names
至少有 2 个值,切片会生成一个列表,其第一个元素是names[2]
或,具体取决于实际有names[1]
多少元素。names
使用 检索切片的第一个元素[0]
。
也没有等价物dict.get
可以让您编写类似的东西names.get(2, names[1])
,尽管这表明您的列表可能应该是 adict
或具有更多语义结构的东西。
推荐阅读
- javascript - 如何将数组设置为 javascript 对象中的键值?
- java - 无效方法仅在放入“onDraw”时才有效
- powershell - 更少的内存然后使用的进程仍然不会关闭进程
- generics - 如何从 Kotlin 中的 KProperty1 中提取类
- excel - 我需要有一个动态报告数据来自另一个工作表。什么是正确的公式?
- python - 无法使用 Python-Flask 在 html 中设置变量值 - 值转换为编码格式
- neo4j - 内置企业版程序不可用
- javascript - 无法让 Promise 依次评估
- javascript - 如何在背景图片中添加 id
- c# - 如何在身份服务器事件处理程序(IEventSink)中获取访问令牌