如何处理从python函数返回的空(无)元组

时间:2013-05-14 01:20:51

标签: python

我有一个返回元组或None的函数。调用者应该如何处理这种情况?

def nontest():
  return None

x,y = nontest()

Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
TypeError: 'NoneType' object is not iterable

3 个答案:

答案 0 :(得分:11)

EAFP

try:
    x,y = nontest()
except TypeError:
    # do the None-thing here or pass

或没有try-except:

res = nontest()

if res is None:
    ....
else:
    x, y = res

答案 1 :(得分:7)

怎么样:

x,y = nontest() or (None,None)

如果nontest返回一个像它应该的两项元组,那么x和y将分配给元组中的项目。否则,x和y都分配给none。如果非测试结果为空,则无法运行特殊代码(如果这是您的目标,上述答案可以帮助您)。好处是它干净,易于阅读/维护。

答案 2 :(得分:5)

如果您可以更改函数本身,最好让它引发相关异常,而不是返回None来表示错误情况。然后,来电者应该只有try / except

如果None 不是发出错误信号,那么您需要完全重新考虑您的语义。