如果要解压缩的值数与变量列表相比太少,是否可以使用默认值?

例如:

a, b, c = read_json(request)


如果read_json返回三个或三个以上变量的数组,则此方法有效。如果它仅返回两个,则在分配c时出现异常。因此,如果无法正确解包,是否可以将c设置为默认值?就像是:

a, b, (c=2) = read_json(request)


这与使用默认参数定义函数时的操作类似。

谢谢!

最佳答案

您可以尝试*进行一些后处理的拆包:

a, b, *c = read_json(request)
c = c[0] if c else 2


这将正常分配ab。如果为c分配了某些内容,则它将是带有一个元素的list。如果仅解压缩两个值,则它将为空的list。如果有第二个语句,则将其第一个元素分配给c,否则,将其默认值分配给2

>>> a, b, *c = 1, 2, 3
>>> c = c[0] if c else 2
>>> a
1
>>> b
2
>>> c
3
>>> a, b, *c = 1, 2
>>> c = c[0] if c else 2
>>> a
1
>>> b
2
>>> c
2

10-08 08:29
查看更多