函数:
1形参函数和实参函数:
形参;形式参数:指的是在定义函数时()内定义的参数
实参:实际参数:调用函数时()内传出的值
def func(x,y) (形参)
def func(10,11)(实参)
2,注意
实参值与形参的绑定关系只在函数调用时才会生效,绑定在函数调用结束后解除绑定
二,位置参数(位置实参,位置形参)
1位置即顺序,位置参数指的是按照从左到右的顺序依次定义的参数
2位置参数有两种(位置形参和位置实参)
在定义函数,按位置定义的形参,称为位置形参
def foo(x,y,z):
print(x,y,z) foo(1,2,3)注意:不是一一对应,只是按照这种调用时必须为其传值,多一个不行,少一个不行
三,调用函数按照定义实参,称为位置实参
注意,位置实参会与形参一一对应
Foo(1,2,3)
(1),关键字参数
什么是关键字参数:
在调用函数时,按照key=value的形式定义实参,称为关键字参数
foo(x=1,y=2,z=3)
注意:相当于指名道姓为形参传值,意味着即使不按照顺序定义,仍然能为指定参数传值
(2)在调用函数时,位置参数与关键字实参可以混合使用,但是必须
1,必须遵循形参规则,
Foo(1,z=3,y=4)
2,不能为同一个形参重复传值
Foo(1,x=1,y=3,)
3,位置实参一定放关键字前面
四,默认参数
1, 在定义阶段,已经为某个形参赋值,那么该形参就称为默认参数
def register(name,age,sex='male'): print(name,age,sex) register('alex',18) register('wxx',55) register('lx',66,'female')
五,应用:
1对于经常需要变化的值,需要将对应的形参定义成位置形参
对于大多数情况值都一样的情况下,需要对应形参定义成默认形参
注意:位置形参必须在默认参数的前面
def func(y=1,x)错
2, 默认参数的值只在定义阶段赋值一次,默认参数的值在定义阶段就固定死了
m=10
def foo(x,y=m): print(x,y) m='qqqqq'foo(1) foo(1,11)六,可变参数
什么是可变长度参数
可变指的参数的个数可以不固定,实参按位置定义的实参和按关键字定义的实参
所以可变长度的实参指的就是按照这两种形式定义的实参个数可以不固定然而实参终究要给形参传值的,所以形参必须有两种对应的解决方案分别处理以上两种可变长度实参
def func(x,y,z,*args): print(x,y,z) print(args) func(1,2,3,4,5,6)*会将溢出的全部接收,然后保存成元组形式赋值给args(一种约定型)
def func(x,y,z,**kwargs):
print(x,y,z) print(kwargs)**会将溢出的关键字全部接收,保存成字典形式赋值给kwargs
一旦碰到实参加*,就把实参的值打散
Foo(1,2,3,*[4,5,6,7])
Foo(1,2,3(4,5,6,7))
七,默认参数的值应设置为不可变类型
def register(name,hobby,l=[]): l.append(hobby) print(hobby) print(name,l) register('wxx','pary',[])
组合使用
def index(name,age,gender):
print('welcom%s %s %s' %(name,age,gender))def wrapper(*args,**kwargs): index(*args,**kwargs) wrapper('egon',age=18,gender='male') wrapper('egon',18,gender='male') wrapper('egon',18,'male')
函数:
1形参函数和实参函数:
形参;形式参数:指的是在定义函数时()内定义的参数
实参:实际参数:调用函数时()内传出的值
def func(x,y) (形参)
def func(10,11)(实参)
2,注意
实参值与形参的绑定关系只在函数调用时才会生效,绑定在函数调用结束后解除绑定
二,位置参数(位置实参,位置形参)
1位置即顺序,位置参数指的是按照从左到右的顺序依次定义的参数
2位置参数有两种(位置形参和位置实参)
在定义函数,按位置定义的形参,称为位置形参
def foo(x,y,z):
print(x,y,z) foo(1,2,3)注意:不是一一对应,只是按照这种调用时必须为其传值,多一个不行,少一个不行
三,调用函数按照定义实参,称为位置实参
注意,位置实参会与形参一一对应
Foo(1,2,3)
(1),关键字参数
什么是关键字参数:
在调用函数时,按照key=value的形式定义实参,称为关键字参数
foo(x=1,y=2,z=3)
注意:相当于指名道姓为形参传值,意味着即使不按照顺序定义,仍然能为指定参数传值
(2)在调用函数时,位置参数与关键字实参可以混合使用,但是必须
1,必须遵循形参规则,
Foo(1,z=3,y=4)
2,不能为同一个形参重复传值
Foo(1,x=1,y=3,)
3,位置实参一定放关键字前面
四,默认参数
1, 在定义阶段,已经为某个形参赋值,那么该形参就称为默认参数
def register(name,age,sex='male'): print(name,age,sex) register('alex',18) register('wxx',55) register('lx',66,'female')
五,应用:
1对于经常需要变化的值,需要将对应的形参定义成位置形参
对于大多数情况值都一样的情况下,需要对应形参定义成默认形参
注意:位置形参必须在默认参数的前面
def func(y=1,x)错
2, 默认参数的值只在定义阶段赋值一次,默认参数的值在定义阶段就固定死了
m=10
def foo(x,y=m): print(x,y) m='qqqqq'foo(1) foo(1,11)六,可变参数
什么是可变长度参数
可变指的参数的个数可以不固定,实参按位置定义的实参和按关键字定义的实参
所以可变长度的实参指的就是按照这两种形式定义的实参个数可以不固定然而实参终究要给形参传值的,所以形参必须有两种对应的解决方案分别处理以上两种可变长度实参
def func(x,y,z,*args): print(x,y,z) print(args) func(1,2,3,4,5,6)*会将溢出的全部接收,然后保存成元组形式赋值给args(一种约定型)
def func(x,y,z,**kwargs):
print(x,y,z) print(kwargs)**会将溢出的关键字全部接收,保存成字典形式赋值给kwargs
一旦碰到实参加*,就把实参的值打散
Foo(1,2,3,*[4,5,6,7])
Foo(1,2,3(4,5,6,7))
七,默认参数的值应设置为不可变类型
def register(name,hobby,l=[]): l.append(hobby) print(hobby) print(name,l) register('wxx','pary',[])
组合使用
def index(name,age,gender):
print('welcom%s %s %s' %(name,age,gender))def wrapper(*args,**kwargs): index(*args,**kwargs) wrapper('egon',age=18,gender='male') wrapper('egon',18,gender='male') wrapper('egon',18,'male')