2015-10-01 39 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兩次。