4

为什么在 Python 中,整数和浮点数在没有在布尔上下文中求值的情况下等同于 True?其他数据类型必须通过运算符或 bool() 进行评估。

4

4 回答 4

6

那不是True

>>> print("True" if 1 else "False")
True
>>> print("True" if 0 else "False")
False
>>> print("True" if 0.0 else "False")
False
>>> print("True" if 123.456 else "False")
True
>>> print("True" if "hello" else "False")
True
>>> print("True" if "" else "False")
False
>>> print("True" if [1,2,3] else "False")
True
>>> print("True" if [] else "False")
False
>>> print("True" if [[]] else "False")
True

只有非零数字(或非空序列/容器类型)评估为True.

于 2013-05-09T07:02:47.480 回答
4

来自 Python 文档 5.1:

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

  • 没有任何
  • 错误的
  • 任何数字类型的零,例如 , 0, 0L, 。0.00j
  • 任何空序列,例如'', (), [].
  • 任何空映射,例如{}.
  • 用户定义类的实例,如果该类定义了一个__nonzero__()__len__()方法,当该方法返回整数零或布尔值 False。

为什么?因为它在遍历对象、循环循环、检查值是否为空等时很方便。总的来说,它为您编写代码的方式添加了一些选项。

于 2013-05-09T07:07:33.533 回答
4

这是一个用例 -

>>> bool(2)
True
>>> bool(-3.1)
True
>>> bool(0)
False
>>> bool(0.0)
False
>>> bool(None)
False
>>> bool('')
False
>>> bool('0')
True
>>> bool('False')
True
>>> bool([])
False
>>> bool([0])
True

在 Python 中,这些是False-

  • 布尔值False本身
  • 任何等于 0 的数值(0、0.0 但不是 2 或 -3.1)
  • 特殊价值None
  • 任何空序列或集合,包括空字符串('', but not '0'or 'hi'or 'False')和空列表([], but not [1,2, 3]or [0]

休息将评估为True阅读更多

于 2013-05-09T07:06:42.563 回答
0

0 被评估为 False。

if 0: 
    assert(0)
于 2013-05-09T07:04:09.703 回答