Python中的"*"是什么意思?

wli*_*iao 2 python

我在python中遇到了一行.

            self.window.resize(*self.winsize)
Run Code Online (Sandbox Code Playgroud)

"*"在这一行中意味着什么?我没有在任何python教程中看到过这个.

pyf*_*unc 8

一种可能性是self.winsize是list或tuple.*运算符从列表或元组中解压缩参数.

请参阅:http://docs.python.org/tutorial/controlflow.html#unpacking-argument-lists

啊:有一个关于这个的讨论:在Python中解包参数列表/ dict案例中的关键字参数

一个例子:

>>> def f(a1, b1, c1): print a1
... 
>>> a = [5, 6, 9]
>>> f(*a)
5
>>> 
Run Code Online (Sandbox Code Playgroud)

因此,解压缩列表或元组之外的元素.元素可以是任何东西.

>>> a = [['a', 'b'], 5, 9]
>>> f(*a)
['a', 'b']
>>> 
Run Code Online (Sandbox Code Playgroud)

另一个小的补充:如果函数需要显式数量的参数,那么元组或列表应该与所需元素的数量相匹配.

>>> a = ['arg1', 'arg2', 'arg3', 'arg4']
>>> f(*a)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: f() takes exactly 3 arguments (4 given)
>>> 
Run Code Online (Sandbox Code Playgroud)

在不知道参数数量的情况下接受多个参数:

>>> def f(*args): print args
... 
>>> f(*a)
('arg1', 'arg2', 'arg3', 'arg4')
>>>
Run Code Online (Sandbox Code Playgroud)

  • 这是唯一的可能性. (2认同)