*a, b, c = line.split() 中的星号有什么作用?

What does the asterisk do in *a, b, c = line.split()?

假设 line 是:"Chicago Sun 01:52"

*a, b, c = line.split() 是做什么的?特别是,星号的意义是什么?

编辑:经测试,似乎 "Chicago""Sun""01:52" 都存储在 ab 和 [=19 中=].星号似乎导致 "Chicago" 作为列表的第一个元素存储在 a 中。所以,我们有 a = ["Chicago"]b = "Sun"c = "01:52"。在这种情况下,有人可以指出 material 星号运算符的功能吗?

用空格分割该文本将得到:

In [743]: line.split()
Out[743]: ['Chicago', 'Sun', '01:52']

现在,这是一个 3 元素 list。该赋值将获取输出的最后两个元素并将它们分别分配给 bc*splat 运算符然后将该列表的其余部分传递给 a,因此 a 是一个元素列表。在本例中,a 是一个单元素列表。

In [744]: *a, b, c = line.split()

In [745]: a
Out[745]: ['Chicago']

In [746]: b
Out[746]: 'Sun'

In [747]: c
Out[747]: '01:52'

查看 PEP 3132 and 了解有关 splat 运算符、它们如何工作以及它们适用于何处的更多信息。