为什么splat运算符(*)仅用于方法参数?

时间:2017-05-04 21:35:50

标签: python

在python中,我可以使用splat运算符解压缩列表并将列表项作为参数发送给函数

   myMap[1][1] = 'A';

我的问题是,为什么这个功能仅限于方法参数?

例如,以下语法无效:

     myMap[1][2] = 'B';

为什么这不会导致dirs = ['this','is','a','file','path'] path = os.path.join(*dirs) # path is now 'this/is/a/file/path'

1 个答案:

答案 0 :(得分:4)

如上所述,它是有效的语法as of Python 3.5+

>>> x = [1,2,3]
>>> y = [0,*x,4,5]
>>> y
[0, 1, 2, 3, 4, 5]

您可以在PEP 448: "Additional Unpacking Generalizations"中了解此用例和更多用例。