* 运算符如何在 python 中工作

How does * operator work in python

我知道它扩展了函数参数,但是如果我在 Python 2:

中尝试这样的事情
x = [1,2,3]
print *x # SyntaxError: invalid syntax
print [*x] # SyntaxError: invalid syntax

看来我遗漏了一些关于 * 到底做什么的东西?

* 运算符将 sequence/iterable 中的元素(例如,列表或元组)解包为函数

的位置参数

在 python2 上,print 是语句而不是函数。所以从 future 导入 print 函数,这样你就可以使用 * 运算符将列表元素解包为参数

>>> from __future__ import print_function
>>> print (*x)
1 2 3

在python3上,print是函数。所以你可以直接使用 * 运算符

>>> print (*x)
1 2 3