为什么仅用于方法参数的SPLAT操作员(*)



在python中,我可以使用splat操作员解开列表并将列表项作为参数发送到函数

dirs = ['this','is','a','file','path']
path = os.path.join(*dirs)
# path is now 'this/is/a/file/path'

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

例如,以下是无效的语法:

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

为什么这不导致[0,1,2,3,4,5]

如前所述,它是有效的语法,从python 3.5 :

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

您可以在PEP 448中阅读有关此信息和更多用例:"其他解开概括"。

最新更新