def foo(*args, **kwargs):
print(args, kwargs)
- 1 foo(x=1)
- 2 foo(1)
- 3 foo({"x": 1})
- 4 foo(**{"x": 1}) dic = {"x": 1}
- 5 foo(dic)
- 6 foo(**dic)
结果:
- 1 () {'x': 1}
- 2 (1,) {}
- 3 ({'x': 1},) {}
- 4 () {'x': 1}
- 5 ({'x': 1},) {}
- 6 () {'x': 1}
args:函数的自变量
kwargs:keyword args 关键字参数
如果是在函数调用中
* args表示将可迭代对象扩展为函数的参数列表,在获取可变数量的参数时特别有用,由于args * 前缀,所有多余的参数都会作为一个元组存储在args中。
def func(*args): print argsfunc(1,2,3)等价于func( * (1,2,3))
** kwargs 表示将字典扩展为关键字参数,由于kwargs的**前缀多余的参数会被认为是一个字典的键/值对。
def func( **kwargs): print kwargsfunc(a=1,b=2)等价于func( **{'a':1,'b':2})
当要使函数接收元组或字典形式的参数的时候,有一种特殊的方法,它分别使用 * 和 ** 前缀。这种方法在函数需要获取可变数量的参数的时候特别有用。
网友评论