您在RHS上获得元组的事实与splat无关。splat只会解压缩您的
map迭代器。你解压 到 由你使用的元组语法的事实决定:
*whatever,
而不是列表语法:
[*whatever]
或设置语法:
{*whatever}您可能已经获得一个列表或一组。您刚刚告诉Python创建一个元组。
在LHS上,分散的分配目标始终会产生一个列表。是否使用“元组样式”都没关系
*target, = whatever
或“列表样式”
[*target] = whatever
目标列表的语法。该语法看起来很像用于创建列表或元组的语法,但是目标列表语法是完全不同的事情。
PEP 3132中引入了您在左侧使用的语法,以支持诸如以下的用例
first, *rest = iterable
在拆包任务中,将iterable的元素按位置分配给未加星标的目标,如果有加星标的目标,则将所有多余内容填充到列表中并分配给该目标。选择一个列表而不是一个元组可以使进一步处理变得容易。由于您的示例中
只有加 星标的目标,因此所有项目都位于分配给该目标的“附加”列表中。



