Python 中 *args 的解包顺序
order of unpacking *args in Python
我想知道为什么变量 last
是 5
当我这样做时
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/
中定义
只是因为它的解包功能。
first
和 last
只是变量,当 *rest
是参数时,所以它们得到元组中 first
和 last
值之间的所有内容 (1 ,2,3,4,5).
如果你想请你写:
[2,3,4,5]
然后只需使用:
first, *args = 1,2,3,4,5
# first --> 1
# args --> [2,3,4,5]
我想知道为什么变量 last
是 5
当我这样做时
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/
中定义只是因为它的解包功能。
first
和 last
只是变量,当 *rest
是参数时,所以它们得到元组中 first
和 last
值之间的所有内容 (1 ,2,3,4,5).
如果你想请你写:
[2,3,4,5]
然后只需使用:
first, *args = 1,2,3,4,5
# first --> 1
# args --> [2,3,4,5]