我在python中遇到了一行.
self.window.resize(*self.winsize)
Run Code Online (Sandbox Code Playgroud)
"*"在这一行中意味着什么?我没有在任何python教程中看到过这个.
一种可能性是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)
| 归档时间: |
|
| 查看次数: |
647 次 |
| 最近记录: |