python中没有逻辑运算符的if语句
问题内容:
我有以下python代码:
value = 1.9
if value:
#do something
else:
#do something else
这里会发生什么?我不明白这一点,因为value
它不是布尔值。
问题答案:
Python有truthy岬其中非布尔值基本上是“被迫”为布尔的,如图所示的一个概念,在这里:
4.1真值测试
可以测试任何对象的真值,用在
if
或while
条件中或用作以下布尔运算的操作数。以下值为“假”:
None
False
- 任何数值类型的零,例如
0
,0.0
,0j
。- 任何空序列,例如
''
,()
,[]
。- 任何空映射,例如
{}
。- 用户定义的类的实例,如果该类定义了
__bool__()
或__len__()
方法,则该方法返回整数0或bool
value时False
。
所有其他值都被认为是真实的-因此许多类型的对象总是真实的。
除非另有说明,否则具有布尔结果的操作和内置函数始终返回,
0
或者返回False
false1
或True
true。(重要的例外:布尔运算,or
并且and
始终返回其操作数之一。)
底线是1.9
“所有其他值都被认为是”子句下的内容,因为它与任何不被认为是假的值匹配。它最接近的是第三个(数字类型),但是由于它不是零,所以还不能
完全实现 。