2

我想在 Python 中执行以下同时分配:

a, b = some_function()

但是,由于我无法控制的原因,some_function可能会返回None而不是某些x, y. 如果发生这种情况,我会收到以下错误,因为None不能同时分配给ab

TypeError: 'NoneType' object is not iterable

处理这种情况的 Pythonic 方法是什么?一个try块,还是别的什么?

4

2 回答 2

4
a, b = some_function() or (None, None)

请注意,这将给出a, b = None, None每个错误的返回值。但在你的情况下,这不是问题,因为非空元组总是真实的。

于 2013-09-12T14:17:39.773 回答
2

您可以先将单个变量中的返回值分配为元组,然后相应地对其进行解包(如果返回值为 ,您可以分配一个虚拟元组None):

tup = some_function()
a, b = tup if tup else (-1, -1)

我不确定这是否是最pythonic的方式。

于 2013-09-12T14:15:53.110 回答