5

我正在冒险进入 python,我有一个关于星号的问题。我知道它们用于函数调用中的参数,但我已经看到在函数卡之外使用它们的代码片段(例如,在 5 个等级的元组中,将它们解压缩为变量,例如:

first, *middle, last = grades

每当我尝试在函数调用的参数之外的上下文/上下文中使用星号时,都会在解释器中得到无效的语法。我在这里错过了什么吗?

4

1 回答 1

11

Python 3 添加了扩展元组解包,支持一个通配符,请参阅PEP 3132

*start, tail = ...
head, *middle, tail =  ...

请参阅赋值语句参考文档:

如果目标列表包含一个以星号为前缀的目标,称为“星号”目标:该对象必须是一个序列,其项目数至少与目标列表中的目标数减一相同。序列的第一个项目从左到右分配给加星标的目标之前的目标。序列的最终项目分配给加星标的目标之后的目标。然后将序列中剩余项目的列表分配给加星标的目标(列表可以为空)。

在赋值的左侧(目标列表)使用星号是 Python 2 中的语法错误。

于 2013-06-11T13:53:57.187 回答