星号在* a,b,c = line.split()中做了什么?

时间:2017-08-24 20:26:21

标签: python python-3.x asterisk iterable-unpacking argument-unpacking

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

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

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

1 个答案:

答案 0 :(得分:3)

按空格分割该文本将为您提供:

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运算符,它们如何工作以及它们适用的位置的更多信息。