可变参数
args,kwargs只是默认变量名称,翻译一下就是列表参数和字典参数(key-word args),关键之处是这里的*和**,这两个都是可变参数。
在函数定义时使用可变参数
Python函数定义中的参数声明一般有三种方式:
# 1. 显示参数(瞎编的)
def func1(name, age):
pass
# 调用方式:
func1('Lily', 12)
func1(name='Lily', age=12)
...
2. 列表参数
def func2(*args):
print(args) # ['Lily', 12]
# 调用方式
func2('Lily', 12) # 不指定参数名,被解析为列表参数
3. 字典参数
def func(**kwargs):
print(args) # {'name':'Lily', 'age':12}
# 调用方式
func1(name='Lily', age=12) # 指定参数名, 非显示声明的参数将被解析为字典参数
在函数调用时使用可变参数
在上面我们定义的时候都是使用的固定参数,Python调用函数的时候也可以直接把列表或字典内的元素作为参数(注意:是里面的元素,而不是字典或列表本身)
例如,对于这个函数定义
def func1(name, age):
pass
如果想要正确的传入name和age两个参数,对应的就可以用下面三种方式
# 基础版本
func1('Lily', 12)
# 列表参数版本
info_list = ['Lily', 12]
func1(*info_list) # 将列表元素解析到对应位置的参数
# 字典参数版本
info_dict = {'name':'Lily', 'age':12}
func1(**info_dict) # 这个就不用解释了吧
Python可变参数总结
在函数定义时使用可变参数,会将传入的多余的、没有显示声明的参数放进列表(args)或字典(kwargs)。
在函数调用时使用可变参数,则是将列表、字典解析成函数显示声明的参数。