Python中的and和or

本文详细解释了Python中and和or运算符的工作原理。通过多个示例演示了这两个运算符如何根据布尔上下文返回实际比较的值之一,而不是简单的布尔值。文章还介绍了当表达式中有副作用时,这些运算符的行为特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ython中的and和or

4.6. and 和 or 的特殊性质
在Python 中,and 和 or 执行布尔逻辑演算,如你所期待的一样,但是它们并不返回布尔值;而是,返回它们实际进行比较的值之一。


例 4.15. and 介绍
>>> 'a' and 'b'        

'b'

>>> '' and 'b'         

''

>>> 'a' and 'b' and 'c'

'c'


使用 and 时,在布尔上下文中从左到右演算表达式的值。0、''、[]、()、{}、None 在布尔上下文中为假;其它任何东西都为真。还好,几乎是所有东西。默认情况下,布尔上下文中的类实例为真,但是你可以在类中定义特定的方法使得类实例的演算值为假。你将会在第 5 章中了解到类和这些特殊方法。如果布尔上下文中的所有值都为真,那么 and 返回最后一个值。在这个例子中,and 演算 'a' 的值为真,然后是 'b' 的演算值为真,最终返回 'b'。 
如果布尔上下文中的某个值为假,则 and 返回第一个假值。在这个例子中,'' 是第一个假值。 
所有值都为真,所以 and 返回最后一个真值,'c'。

 

 

 

>>> 'a' or 'b'         

'a'

>>> '' or 'b'          

'b'

>>> '' or [] or {}     

{}

>>> def sidefx():

...     print "in sidefx()"

...     return 1

>>> 'a' or sidefx()    

'a'
使用 or 时,在布尔上下文中从左到右演算值,就像 and 一样。如果有一个值为真,or 立刻返回该值。本例中,'a' 是第一个真值。 
or 演算 '' 的值为假,然后演算 'b' 的值为真,于是返回 'b' 。 
如果所有的值都为假,or 返回最后一个假值。or 演算 '' 的值为假,然后演算 [] 的值为假,依次演算 {} 的值为假,最终返回 {} 。 
注意 or 在布尔上下文中会一直进行表达式演算直到找到第一个真值,然后就会忽略剩余的比较值。如果某些值具有副作用,这种特性就非常重要了。在这里,函数 sidefx 永远都不会被调用,因为 or 演算 'a' 的值为真,所以紧接着就立刻返回 'a' 了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值