为什么在 Python 中,整数和浮点数在没有在布尔上下文中求值的情况下等同于 True?其他数据类型必须通过运算符或 bool() 进行评估。
user2260218
问问题
6775 次
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.0
0j
- 任何空序列,例如
''
,()
,[]
. - 任何空映射,例如
{}
. - 用户定义类的实例,如果该类定义了一个
__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 回答