为什么单个值可以作为一个条件

JGe*_*kis 1 python conditional-statements

显然,在条件语句中,您需要确保返回true或false值,以执行或跳过与if语句关联的代码块.单个值如何在python中作为真正的布尔值?我不确定这是否适用于所有语言,但我在python 3.x中发现它.

例:

value = 1
if value:
   print("value == True") # prints every time
Run Code Online (Sandbox Code Playgroud)

我希望编译器抱怨或只返回false.为什么编译器会认为if value是真的?

Mar*_*cin 5

除0以外的整数或浮点值被视为True:

In [8]: bool(int(1))
Out[8]: True

In [9]: bool(int(0))
Out[9]: False

In [10]: bool(int(-1))
Out[10]: True


In [16]: bool(float(1.2e4))
Out[16]: True

In [17]: bool(float(-1.4))
Out[17]: True

In [20]: bool(0.0)
Out[20]: False

In [21]: bool(0.000001)
Out[21]: True
Run Code Online (Sandbox Code Playgroud)

类似地,空列表,集合,dicts,空字符串,None等被视为false:

In [11]: bool([])
Out[11]: False

In [12]: bool({})
Out[12]: False

In [13]: bool(set())
Out[13]: False

In [14]: bool("")
Out[14]: False

In [19]: bool(None)
Out[19]: False
Run Code Online (Sandbox Code Playgroud)

  • 也是"无",当然还有"假".可能还提供相关[docs]的链接(https://docs.python.org/3/library/stdtypes.html#truth-value-testing) (2认同)