*args和**kwargs是Python的魔法参数,即可变参数,支持传入多个参数,主要用于函数定义,将不定数量的参数传给一个函数。只有前面的
星(*)号是必须的,后面的 args 和 kwargs 是通俗的命名约定,可以换成任意的名称,如:*var 和 **vars。*args是位置(可变)参数,表示任意个无名参数,是一个tuple。**kwargs是关键字(可变)参数,是一个键值对的dict。示例一
def variable_parameter(*args, **kwargs):
print('args=', args)
print('kwargs=', kwargs)
variable_parameter(7, 78, 'xz', a = 'python', b = 'learning')
args= (7, 78, 'xz')
kwargs= {'a': 'python', 'b': 'learning'}
- 示例二
def many_parameters(first, *args, **kwargs):
print('Standard parameter:', first)
for v in args:
print('Positional parameter:', v)
for k, v in kwargs.items():
print(f"Keyword parameter: key = {k}, values = {v}")
many_parameters('hello', 520, 'word', name = 'python', content = 'learn-plan')
Standard parameter: hello
Positional parameter: 520
Positional parameter: word
Keyword parameter: key = name, values = python
Keyword parameter: key = content, values = learn-plan