目录
一:参数分类
二:位置参数
三:关键字参数
四:默认参数
五:可变长参数
一:参数分类
1、函数参数有两种分类方式:
1)形参、实参
形参:在定义时,括号内定义的参数,形参就是变量名
实参:在调用时,括号内传入的值,实参就是变量名
2)位置参数、关键字参数、默认参数、可变长参数
二:位置参数
1、定义:位置即顺序,位置参数值的就是按照从左到右的顺序依次定义的参数
2、位置参数:位置形参、位置实参
1)位置形参
定义函数时,按照位置定义的形参,称为位置形参
def foo(x,y,z): #按照顺序
print(x,y,z)
#注意点:在掉用函数时,必须为其传值,而且多一个不行,少一个不行
2)位置实参
按照位置定义的实参,称为位置实参
foo(1,2,3)#按照顺序传值
#注意点:位置实参会与形参一一对应
三:关键字参数
1、定义:在调用函数时,按照key=value的形式定义的实参,
称为关键字参数
2、关键字参数:
相当于指名道姓地为形参传值,以为着不按照顺序定义,
仍然能为指定的参数传值
def foo(x,y,z): print(‘你好‘) foo(1,2,z=12) #位置实参可以和关键字参数合用 foo(1,z=12,2) #错误用法,关键字参数必须在为参数后面
foo(1,x=1,y=2,z=12)#错误用法,不能为同意个形参传值
四:默认参数
定义:在定义阶段已经为摸个形参赋值,这种形参就叫默认参数
def register(name,age,sex=‘male‘): print(name,age,sex) def func(y=1,x): #错误,默认函数必须在位置形参后面 pass
注意:默认参数只在定义阶段赋值一次,也就是说默认参数的值在定义阶段就固定死了
m=10#次位传
def foo(x,y=m):
print(x,y)
m=‘1213‘#传不进去,因为已经到了调用阶段
foo(1)
foo(1,11)#最先传
五:可变长参数
1、定义:实参不固定,如何将多于的实参传进去
2、可变长位置参数:
1)可变长位置参数*args:
*将溢出的位置实参全部接收,然后保存为元组
的形式赋值给args
def foo(x,y,z,*args): #args=(4,5,6,7,8) print(x,y,z) print(args) foo(1,2,3,4,5,6,7,8,)
2)可变长关键字参数**kwargs:
*将溢出的关键字实参全部接收,然后保存为字典
的形式赋值给args
def foo(x,y,z,**kwargs): #kwargs={‘a‘:1,‘b‘:2,‘c‘:3} print(x,y,z) print(args) foo(1,2,3,a=1,b=2,c=3)
3、实参中包含*、**
def s(x,y,z): print(x,y,z) s(1,*‘ds‘) #将加星的参打散成一个个元素传入形参 def s(x,y,z): print(x,y,z) s(1,**{‘y‘:1,‘z‘:2})