在Python的函数参数中经常可以看到*args和**kwargs这样的写法,这是Python的魔法参数,也就是可变参数,它支持传入多个参数,下面看看它们的区别。
*args表示任何多个无名参数,它是一个tuple;**kwargs表示关键字参数,它是一个 dict。并且同时使用*args和**kwargs时,必须*args参数列要在**kwargs前,像foo(a=1, b=’2′, c=3, a’, 1, None, )这样调用的话,会提示语法错误“SyntaxError: non-keyword arg after keyword arg”。
举例使用**kwargs可变参数创建字典:
def kw_dict(**kwargs):
return kwargs
那么该函数的效果就定义了一个字典,kw_dict(a=1,b=2,c=3) 和{‘a':1, ‘b':2, ‘c':3}等效。
Python的可变参数也叫动态参数,再看*args和**kwargs的简单基本用法。
def alias(*args, **kwargs):
print('args=', args)
print('kwargs=', kwargs)
alias(3, 23, 3, 3,a='hello',b=3,c='C')
运行效果如下:
tantengdeMacBook-Pro:learn-python tanteng$ python3 args_kwargs.py
args= (3, 23, 3, 3)
kwargs= {'a': 'hello', 'b': 3, 'c': 'C'}
args输出为tupple元祖,kwargs为字典
时间: 2024-10-11 21:37:17