python中没有逻辑运算符的if语句


问题内容

我有以下python代码:

value = 1.9

if value:
    #do something
else:
    #do something else

这里会发生什么?我不明白这一点,因为value它不是布尔值。


问题答案:

Python有truthy岬其中非布尔值基本上是“被迫”为布尔的,如图所示的一个概念,在这里

4.1真值测试

可以测试任何对象的真值,用在ifwhile条件中或用作以下布尔运算的操作数。以下值为“假”:

  • None
  • False
  • 任何数值类型的零,例如00.00j
  • 任何空序列,例如''()[]
  • 任何空映射,例如{}
  • 用户定义的类的实例,如果该类定义了__bool__()__len__()方法,则该方法返回整数0或bool
    value时False


所有其他值都被认为是真实的-因此许多类型的对象总是真实的。

除非另有说明,否则具有布尔结果的操作和内置函数始终返回,0或者返回Falsefalse1Truetrue。(重要的例外:布尔运算,or并且and始终返回其操作数之一。)

底线是1.9“所有其他值都被认为是”子句下的内容,因为它与任何不被认为是假的值匹配。它最接近的是第三个(数字类型),但是由于它不是零,所以还不能
完全实现