函数参数
函数参数分为形式参数和实际参数,简称形参和实参。
形参是在函数定义阶段时,括号内声明的参数。形参本质是变量名,用来接收外部参数。
实参是在函数调用阶段时,括号内传入的值。实参本质是变量值,用来传入值,值可以是常量、变量等
def index(a,b): #形参
pass
index(1,2) #实参
形参和实参的使用
位置参数
在形参中,接收的值按照位置顺序一一对应,这种是位置形参。
在实参中,传入的值按照位置顺序一一传入,这种是位置实参。
def index(a,b): #a,b就是位置形参
pass
index(1,2) #1,2是位置实参
注意的是,
位置形参与位置实参对应的变量名和变量值要相等,不能多也不能少。
关键字参数
在调用函数函数时,实参是key=value的形式,可以不按顺序传入,一样可以为形参赋值。被称被关键字实参,注意,没有关键字形参这一说法。
def index(a,b): #形参
pass
index(a=1,b=2) #关键字实参
在调用参数时,可以把位置实参和关键字实参组合使用,但需要注意几点:
位置实参必须在关键字实参前面:
def index(a,b):
pass
index(10,b=2)
位置实参传给形参后,关键字实参不能传给相同的形参
def index(a,b):
pass
index(1,a=2)
默认形参
在定义函数时,就被形参赋值
def index(a=1,b):
pass
index(10)
因为形参a已经被赋值,所以实参传值可以不用对a传值,减少重复
def register(name,age,sex='male'):
print('name:%s,age:%s,sex:%s' %(name,age,sex))
register('kk',12)
可变长参数
可变长参数在形参中的使用:
可变长位置参数,可以把溢出的位置实参全部接收
def index(*args):
pass
index(1,2,3,4)
可变长关键字参数,可以把溢出的关键字实参全部接收
def index(**kwargs):
pass
index(a=1,b=2,c=3)
可变长参数在实参中的使用:
def func(x,y,z):
print(x,y,z)
def wrapper(*args,**kwargs): #位置实参变为元组形式,关键字实参变为字典形式
func(*args,**kwargs) #打散成实参传入时的形式,func(1,y=2,z=3)
wrapper(1,y=2,z=3)