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

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

编辑:测试后,似乎"Chicago""Sun""01:52"都存储在abc中。星号似乎导致"Chicago"被存储为a作为列表的第一个元素。因此,我们有a = ["Chicago"]b = "Sun"c = "01:52"。在这种情况下,谁能指出星号运算符的功能?

最佳答案

通过空格分隔该文本将为您提供:

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 3132Where are python's splat operators * and ** valid?以获取有关splat运算符,它们如何工作以及在何处适用的更多信息。

07-26 05:37