如果要解压缩的值数与变量列表相比太少,是否可以使用默认值?
例如:
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
这将正常分配
a
和b
。如果为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