def func(*args, **kwargs):
print('{}'.format(kwargs))
print('{}'.format(args))
pass
if __name__ == '__main__':
var_kw = dict(
a=1,
b=2
)
func(1, 2, a=3, b=4)
func(*(1, 2), **var_kw)
# ---------------
{'a': 3, 'b': 4}
(1, 2)
{'a': 1, 'b': 2}
(1, 2)
说明:
从上方的例子来看,*
和 **
的用途:
- 在元组前加上
*
可以将元组拆分,将元组内的元素作为实参传入到函数. - 在字典前加
**
将字典拆分,使用关键字参数传值. - 例子中的两种函数调用方式,结果都是一样的:
func(1, 2, a=3, b=4)
func(*(1, 2), **var_kw)
- 使用不定参数可以避免在定义函数的时候写多个形参