我想在 Python 中执行以下同时分配:
a, b = some_function()
但是,由于我无法控制的原因,some_function
可能会返回None
而不是某些x, y
. 如果发生这种情况,我会收到以下错误,因为None
不能同时分配给a
和b
:
TypeError: 'NoneType' object is not iterable
处理这种情况的 Pythonic 方法是什么?一个try
块,还是别的什么?
我想在 Python 中执行以下同时分配:
a, b = some_function()
但是,由于我无法控制的原因,some_function
可能会返回None
而不是某些x, y
. 如果发生这种情况,我会收到以下错误,因为None
不能同时分配给a
和b
:
TypeError: 'NoneType' object is not iterable
处理这种情况的 Pythonic 方法是什么?一个try
块,还是别的什么?
a, b = some_function() or (None, None)
请注意,这将给出a, b = None, None
每个错误的返回值。但在你的情况下,这不是问题,因为非空元组总是真实的。
您可以先将单个变量中的返回值分配为元组,然后相应地对其进行解包(如果返回值为 ,您可以分配一个虚拟元组None
):
tup = some_function()
a, b = tup if tup else (-1, -1)
我不确定这是否是最pythonic的方式。