2015-11-04 78 views
-1

我有這個功能Python函數,返回false和無

def postData(): 
    data = doPOst() 
    if data.result == "success": 
     return data 
    if data.result == "fail": 
     return false 

然後我根據回報,我不得不做一些像

if ret is None: 
    pass # 1 
if ret is False: 
    pass # 2 
else: 
    normal 

我想知道,將無與假獲得混合

+0

你的意思'返回FALSE'或'返回FALSE'?另外 - 數據怎麼可能是無?看起來你要麼返回一些東西或返回False –

+0

@JohnColeman如果對於某些重複調用postcall超時並且沒有數據,則不會出現任何錯誤 –

+0

@JohnKaff如果doPost()返回None,那麼ifs將會以AttributeErrors失敗(因爲None將沒有結果屬性) – Sebastian

回答

3

如果你明確地檢查了NoneFalse,那麼不,他們不會合並。

if ret is None: # entered only on None 
    pass 
elif ret == False: # entered only on False or 0 
    pass 
else: 
    pass 

如果你只是檢查truthy/falsey值,他們會得到合併:

if ret: 
    pass 
else: # entered on None or False 
    pass 
+0

如果但不是elif有什麼區別。 –

+1

@JohnKaff如果你每次都回來,那麼整體行爲將是一樣的。但是,恕我直言,使用elifs更好,因爲它們更密切地描述代碼中的推理(即它們是互斥的結果) – Sebastian

+0

約翰,我想澄清一下,如果與elif與您的原始問題無關。請注意Tigerhawk的第一個例子是如何明確檢查ret是None還是False或其他。在他的第二個例子中,None,False和0都被認爲是相同的。 – Tom