Python基础之 三元运算符|Python 主题月

504 阅读2分钟

 三元运算符

本文正在参加「Python主题月」,详情查看活动链接

三元运算符在 Python 中通常称为条件表达式。这些运算符根据条件为真与否来评估某些内容。

方法一:if else

格式

1 if True else 2  # 条件成立为1, 不成立为2 

示例:

abc = True
state = 1 if abc else 2
print(state)
>>> 1

它允许快速测试条件而不是多行 if 语句。很多时候它非常有用,可以使您的代码紧凑但仍可维护。

方法二:(a,b)[True]

另一个更方便且未广泛使用的示例涉及元组。下面是一些示例代码:

格式:

(is_false, is_true)[test]  # test等于True就输出is_true,为False就输出is_false

例子:

nice = True
personality = ("mean", "nice")[nice]
print(personality)
>>> nice

这很简单,因为 True == 1 和 False == 0,因此除了元组之外还可以使用列表来完成。

上面的例子并没有被广泛使用,因为容易混淆元组中将真值放在哪里和将假值放在哪里。

避免使用元组三元组的另一个原因是它会导致计算元组的两个元素,而 if-else 三元运算符则不会。

例子:

condition = True
print(2 if condition else 1/0)
>>> 2

print((1/0, 2)[condition])
>>> ZeroDivisionError: division by zero

发生这种情况是因为使用元组三元技术,首先构建元组,然后找到索引。对于 if-else 三元运算符,它遵循正常的 if-else 逻辑树。因此,如果一种情况可以根据条件引发异常,或者如果任何一种情况都是计算量大的方法,最好避免使用元组。

方法三:速记三元

在 python 中还有速记三元标签,它是您在上面看到的普通三元运算符的较短版本。

例子

>>> True or "Some"
True
>>>
>>> False or "Some"
'Some'

第一个语句(True 或“Some”)将返回True,第二个语句(False 或“Some”)将返回Some。

如果您想快速检查函数的输出并在输出为空时给出有用的消息,这将很有帮助:

>>> output = None
>>> msg = output or "No data returned"
>>> print(msg)
No data returned

或者作为一种使用动态默认值定义函数参数的简单方法:

>>> def my_function(real_name, optional_display_name=None):
>>>     optional_display_name = optional_display_name or real_name
>>>     print(optional_display_name)
>>> my_function("John")
John
>>> my_function("Mike", "anonymous123")
anonymous123