假设line
为:"Chicago Sun 01:52"
。
*a, b, c = line.split()
做什么?特别是,星号的意义是什么?
修改:测试后,似乎"Chicago"
,"Sun"
和"01:52"
都存储在a
,b
和c
中。星号似乎导致"Chicago"
作为列表的第一个元素存储在a中。因此,我们有a = ["Chicago"]
,b = "Sun"
和c = "01:52"
。在这种情况下,是否有人能指出星号运算符功能的材料?
答案 0 :(得分:3)
按空格分割该文本将为您提供:
In [743]: line.split()
Out[743]: ['Chicago', 'Sun', '01:52']
现在,这是一个3元素list
。赋值将采用输出的最后两个元素,并分别将它们分配给b
和c
。然后,*
或 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和Where are python's splat operators * and ** valid?,了解有关splat运算符,它们如何工作以及它们适用的位置的更多信息。