在 Python 的函数中,可以定义可变参数。可变参数指的是在函数定义时,该函数可以接受任意个数的参数,参数的个数可能是1个或多个,也可能是0个。可变参数有两种形式,参数名称前加星号(*
)或者加两个星号(**
)。
语法格式:
def funname(formal_args,*args,**kwargs):
statements
return expression
在上面的函数定义中, formal_args
为定义的传统参数,代表一组参数,*args
和** kwargs
为可变参数。函数传入的参数个数会优先匹配 formal_args
参数的个数,* args
以元组的形式保存多余的参数,** kwargs
以字典的形式保存带有指定名称形式的参数,这种参数也称为关键字参数。
调用函数的时候,如果传人的参数个数和 formal_args
参数的个数相同,可变参数会返回空的元组或字典;如果传人参数的个数比 formal_args
参数的个数多,可以分为如下两种情况:
* args
会以元组的形式存放这些多余的参数。** kwargs
会以字典的形式存放在这些被命名的参数。例 6-9 可变参数的应用:
#ex0609.py
def showmessage(name,*p_info):
print("姓名",name)
for e in p_info:
print(e,end=",")
return
#调用showmassage函数
showmessage("Kate")
print("-----------------------")
showmessage("Kate","male",18,"Dalian")
例 6-10 关键字数的应用:
#ex0610.py
def showmessage(name,*p_info,**scores):
print("姓名",name)
for e in p_info:
print(e,end=",")
for item in scores.items():
print(item,end=" ")
print()
return
#调用showmassage函数
showmessage("Kate","male",18,"Dalian")
print("-----------------------")
showmessage("Kate","male",18,"Dalian",math=86,pe=92,eng=88)