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