2015-10-01 37 views
-4

我跑下面的代码在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 

为什么None在第一种情况下打印两次。

+1

'如果不是我'在'i'为无时执行。 – vaultah

+1

'无'是错误的。所以,如果'我'是'None','if'不会'我'。 –

+0

负面蜱应得的 – user1572215

回答

0

您错过了某些东西; if条件为真:

>>> i = None 
>>> i is None 
True 
>>> not i 
True 

Noneconsidered false in a boolean context; 不是错误是真的;引用的文件:

任何对象都可以用于真值进行测试,用于在ifwhile条件或如下的布尔运算的操作数使用。下面的值被认为是假的:

  • None

[...]

所有其他值被认为是真实的 - 这么多类型的对象总是如此。

与这两个if i is None:if not i:传球,打印i两次。