python - 三元运算符有异常(exception)吗?

标签 python exception conditional-operator

我经常发现自己编写如下代码:

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/

相关文章:

Python ValueError : not enough values to unpack (expected 3, 得到 1)

python - 按多个条件对列表进行排序并附加

Java 小程序 --> ClassNotFound 异常

python - 派生并为新添加的子项的索引设置颜色

python - 在 Python 中使用 beautifulsoup 从网站中提取数字

python - 如何从 Python 3 导入 FileNotFoundError?

iphone - ios @try @catch 从 @catch 返回时阻止 EXC_BAD_ACCESS

java - 减少表达式中使用的条件运算符 (4) 的数量(最多允许 3 个)

java - 在地址簿中添加和检查 Java 中的条目

java - 如何强制 Java 接受方法调用的参数之一的条件类型?