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

python中没有逻辑运算符的If语句,python,Python,我有以下python代码: value = 1.9 if value: #do something else: #do something else 这里发生了什么?我无法理解这一点,因为value不是布尔值 任何对象都可以测试真值,用于if或while 条件或作为下面布尔运算的操作数。以下 值被认为是错误的: 没有 假的 任何数字类型的零,例如0、0L、0.0、0j 任何空序列,例如,,(),[] 任何空映射,例如,{} 用户定义类的实例,如果该类定义了 非零()或len

我有以下python代码:

value = 1.9

if value:
    #do something
else:
    #do something else
这里发生了什么?我无法理解这一点,因为
value
不是布尔值

任何对象都可以测试真值,用于if或while 条件或作为下面布尔运算的操作数。以下 值被认为是错误的:

  • 没有
  • 假的
  • 任何数字类型的零,例如0、0L、0.0、0j
  • 任何空序列,例如,,(),[]
  • 任何空映射,例如,{}
  • 用户定义类的实例,如果该类定义了 非零()或len()方法,当该方法返回整数零或布尔值False时


因此,既然价值不是这些东西中的一个,它需要的是“如果”,而不是“其他”

Python有一个真实性的概念,非布尔值基本上被“强制”为布尔值,如图所示:

4.1真值测试

任何对象都可以测试真值,用于
if
while
条件,或作为下面布尔运算的操作数。以下值被认为是错误的:

  • None
  • False
  • 任何数字类型的零,例如,
    0
    0.0
    0j
  • 任何空序列,例如,
    '
    ()
    []
  • 任何空映射,例如,
    {}
  • 用户定义类的实例,如果该类定义了
    \uuu bool\uu()
    \uu len\uuu()
    方法,则该方法返回整数零或bool值
    False
所有其他值都被认为是真的-因此许多类型的对象总是真的

除非另有说明,否则具有布尔结果的操作和内置函数始终返回
0
False
表示False,返回
1
True
表示True。(重要例外:布尔运算
始终返回其操作数之一。)


底线是
1.9
属于“所有其他值都被认为是真的”子句,因为它与所有被认为是假的值都不匹配。最接近的是第三个数字(数字类型),但由于它不是零,所以不太接近。在python中,就像在许多编程语言中一样
0,,[]
这类值给出
False
,而任何其他值返回
True

只有当值等于0或“

多个时,它才会为False?名称七:-)好的
python
C
C++
Perl
Lua
Ruby
JavaScript
。@我知道sehrob在C/C++中是空字符串literal
表示true,因为它不是空指针,在JavaScript中是空列表literal
[/code>表示true,也但是在Python中,这些东西被认为是
False
。你是对的@neuron,我只是想说一个值不需要是一个布尔类型,就可以这样计算:)你可以使用bool()测试Python如何计算布尔值。例如bool(1)=True。布尔(0)=假。bool(“任意字符串”)=True。bool(“”=False。布尔(2.2)=真。没有零的数字总是正确的。非空字符串始终为true。非空列表为true等