Python中and、or是Python中的逻辑运算符,它们的用法如何呢?
and:
在 Python 中,and 和 or 执行布尔逻辑,正如你所期望的那样,但它们不返回布尔值;相反,他们返回他们实际比较的值之一。
代码如下:
>>> 'a' and 'b' 'b'
>>> '' and 'b' ''
>>> 'a' and 'b' and 'c'
'c'
在布尔上下文中从左到右计算表达式,如果布尔上下文中的所有值都为真,则返回最后一个值。
如果布尔上下文中的值之一为假,则返回第一个假值
or:
代码如下:
>>> 'a' or 'b' 'a'
>>> '' or 'b' 'b'
>>> '' or [] or {}
{}
>>> 0 or 'a' or 'c'
'a'
使用 or 时,值在布尔上下文中从左到右求值,就像 and 一样。如果任何值为真,或立即返回该值
如果所有的值都为假,or 返回最后一个假值
请注意,或在布尔上下文中计算表达式直到找到第一个真值,然后忽略剩余的比较值
and-or:
and-or 结合了前面的两种语法,推理即可。
>>> a='first'
>>> b='second'
>>> 1 and a or b 'first'
>>> (1 and a) or b 'first'
>>> 0 and a or b 'second'
>>> (0 and a) or b 'second'
>>>
此语法看起来类似于 bool ? a : b C 中的表达式。整个表达式是从左到右求值的,所以 and 表达式先求值。 1 和 'first' 的计算结果为 'first',然后 'first' 或 'second' 的计算结果为 'first'。
0 and 'first' 演算值为 False,然后 0 or 'second' 演算值为 'second'。
and-or主要用来模仿三元运算符bool?a:b,即当表达式bool为真时取a,否则取b。
and-or 技巧,bool and a or b 表达式,不像 C 表达式 bool ? a : b 当 a 在布尔上下文中的计算结果为 false 时。
安全使用and-or
代码如下:
>>> a=""
>>> b="second"
>>> (1 and [a] or [b])
['']
>>> (1 and [a] or [b])[0] ''
>>>
由于 [a] 是一个非空列表,因此它永远不会为假。即使 a 为 0 或 '' 或其他某个假值,List[a] 也为真,因为它只有一个元素。
一个负责任的程序员应该将 and-or 技巧包装到一个函数中:
代码如下:
def choose(bool,a,b):
return (bool and [a] or [b])[0]
print choose(1,'','second')
#''
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ python 正则表达式如何匹配内容09/04
- ♥ python如何处理图片08/31
- ♥ Python pandas 和 numpy 的区别09/03
- ♥ 如何在python中实现单向链表01/02
- ♥ 什么是 python 启动器08/18
- ♥ python中的-1是什么意思08/27
内容反馈