我正在使用表现出以下行为的代码。假设我有一个变量d
我把它赋给一个整数9
d = 9
为什么以下语句有效?
In [95]: if d:
....: print d
....: else:
....: print 'Did not print d!'
....:
9
In [96]:
当 d 本身不是布尔值且未通过以下测试时:
In [96]: d is True
Out[96]: False
In [97]: d is False
Out[97]: False
如果有人能向我解释这一点并指出我的任何误解,我将不胜感激。非常感谢。
引用自Python 官方文档 https://docs.python.org/2/reference/expressions.html#booleans,
在布尔运算的上下文中,并且当控制流语句使用表达式时,以下值将被解释为 false:False
, None
、所有类型的数字零以及空字符串和容器(包括字符串、元组、列表、字典、集合和冻结集合)。所有其他值均解释为 true。
The if
声明属于布尔运算的上下文. Since d
being 9
不属于任何错误值,它被认为是真实的。
你可以像这样确认同样的事情
>>> all(bool(value) is False for value in (False, 0, +0, -0, "", (), [], {}, set()))
True
虽然价值9
两者都不是True
nor False
,您确定的d is True
and d is False
测试中,由于上述原因,它被认为是Truthy。
>>> bool(9)
True
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)