直到 Python 3.5,文档仍然说(强调我的):
4.1. 真值检验
可以测试任何对象的真值,用于 if 或 while 条件或作为下面布尔运算的操作数。以下值被认为是错误的:
None
False
任何数字类型的零,例如
0
,0.0
,0j
。任何空序列,例如
''
,()
,[]
。任何空映射,例如
{}
.用户定义类的实例,如果该类定义了一个
__bool__()
或__len__()
方法,当该方法返回整数零或bool
值时False
。[1]所有其他值都被认为是真实的——所以许多类型的对象总是真实的。
除非另有说明,否则具有布尔结果的操作和内置函数始终返回
0
orFalse
for false 和1
orTrue
for true。(重要的例外:布尔运算or
总是and
返回它们的操作数之一。)
一个非空列表 like[5]
不属于上面列表中的任何内容,因此“所有其他”指定它是真的。
但从 Python 3.6 开始,它就消失了。该部分现在说:
真值检验
可以测试任何对象的真值,用于
if
orwhile
条件或作为下面布尔运算的操作数。默认情况下,一个对象被认为是真实的,除非它的类定义了一个返回零的
__bool__()
方法,当用该对象调用时。[1] 以下是大多数被认为是 false 的内置对象:False
__len__()
常量定义为假:
None
和False
。任何数字类型的零:
0
,0.0
,0j
,Decimal(0)
,Fraction(0, 1)
空序列和集合:
''
,()
,[]
,{}
,set()
,range(0)
除非另有说明,否则具有布尔结果的操作和内置函数始终返回
0
orFalse
for false 和1
orTrue
for true。(重要的例外:布尔运算or
总是and
返回它们的操作数之一。)
Now[5]
可能有一个__bool__()
返回 的方法False
,因此它是错误的。当前文档中是否有新的地方以某种方式指定非空列表为真?
忽然笑
陪伴而非守候
暮色呼如
相关分类