2015-11-04 116 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