当源可能为空时,如何执行Pythonic同步赋值?
我想用Python同时执行以下赋值:当源可能为空时,如何执行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
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)