Python 中 *args 的解包顺序

order of unpacking *args in Python

我想知道为什么变量 last5 当我这样做时

first, *rest, last = 1,2,3,4,5

我认为赋值是从左到右的,因此 *rest 将是 [2,3,4,5],但实际上是 [2,3,4] 而且我以为 last 会是空的,或者这段代码会导致错误,但令人惊讶的是它有效,但我不明白为什么

这是仅在 Python 3 中有效的语法,称为 "extended unpacking" 并在 PEP 3132 - https://www.python.org/dev/peps/pep-3132/

中定义

只是因为它的解包功能。

firstlast 只是变量,当 *rest 是参数时,所以它们得到元组中 firstlast 值之间的所有内容 (1 ,2,3,4,5).

如果你想请你写:

[2,3,4,5]

然后只需使用:

first, *args = 1,2,3,4,5
# first --> 1
# args --> [2,3,4,5]