我经常发现自己编写如下代码:
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]
最佳答案
没有用于处理异常的表达式(尽管有 rejected 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])
的内容,尽管这表明也许您的列表应该是一个dict
或具有更多语义结构的东西。
关于python - 三元运算符有异常(exception)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59898567/