我在Python 2.7.10中运行了以下代码:
count = 1
for i in (False, None):
print count
count += 1
if i is None:
print i
if not i:
print i
,输出
1
False
2
None
None
如果我运行代码:
count = 1
for i in (False, None):
print count
count += 1
if i is None:
print i
输出是:
1
2
None
为什么在第一种情况下无打印两次。
答案 0 :(得分:0)
你遗失了什么; 两个 if
条件都属实:
>>> i = None
>>> i is None
True
>>> not i
True
None
是considered false in a boolean context; 不 false是真的;引用文档:
可以测试任何对象的真值,以便在
if
或while
条件下使用,或者作为下面布尔运算的操作数。以下值被视为false:
None
[...]
所有其他值都被认为是真的 - 因此许多类型的对象始终为真。
同时传递if i is None:
和if not i:
,您需要两次打印i
。