当源可能为空时,如何执行Pythonic同步赋值?

当源可能为空时,如何执行Pythonic同步赋值?,python,variable-assignment,Python,Variable Assignment,我想用Python同时执行以下赋值: a, b = some_function() 但是,由于我无法控制的原因,some_函数可能返回None而不是一些x,y。如果发生这种情况,我会得到以下错误,因为None不能同时分配给a和b: TypeError: 'NoneType' object is not iterable 处理这种情况的蟒蛇式方法是什么?一个试一下块,或者其他什么?您可以先将单个变量中的返回值指定为tuple,然后相应地将其解包(如果返回值为None,您可以指定一个伪tuple

我想用Python同时执行以下赋值:

a, b = some_function()
但是,由于我无法控制的原因,
some_函数
可能返回
None
而不是一些
x,y
。如果发生这种情况,我会得到以下错误,因为
None
不能同时分配给
a
b

TypeError: 'NoneType' object is not iterable

处理这种情况的蟒蛇式方法是什么?一个
试一下
块,或者其他什么?

您可以先将单个变量中的返回值指定为tuple,然后相应地将其解包(如果返回值为
None
,您可以指定一个伪tuple):

不过,我不确定这是否是最适合蟒蛇的方式

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

注意,这将为每个假返回值提供
a,b=None,None
。但在你的例子中,这不是问题,因为非空元组总是正确的。

是的,我想到了这一点,我认为是“三思而后行”而不是“鸭子打字”引发了这个问题!你的建议非常简洁,即使事实证明没有给它打气:)
a, b = some_function() or (None, None)