一 函数的参数
位置参数【又称必选参数】
传递参数的顺序与定义的顺序有关,必须按照定义的顺序来进行传递。
传递参数的个数与参数的个数必须保持一致。
关键字参数:
指函数调用的时候,可以通过"键-值"的形式来加以指定,
可以清除位置关系。
当出现位置参数与关键字参数的时候,需要将位置参数写在关键字参数前面
默认参数
定义函数的时候,我们可以给参数提供默认值,调用函数的时候可以传递此参数
可以不传,当传递此参数的时候,函数则使用传递的参数,若不传递则使用默认值。
注意:
1.若默认参数与位置参数同时存在的时候,位置参数要写在默认参数的前面
2.给定默认参数的时候,默认参数需要指向不可变对象。
二 不定长参数
特点:能处理比声明时候更多的参数【传递多少参数,处理多少参数,不传递不处理】
不定长参数分为两种:
包裹位置参数:
使用:*变量名 一般用*args
功能:可以收集除了必选参数以外剩余的位置参数,按照元组来进行处理
包裹关键字参数:
使用:**变量名 一般用**kwargs
功能:收集除定义的变量的关键字参数之外,剩余关键字参数。
包裹关键字参数只处理剩余的关键字参数,收集作为字典来进行处理。
注意:当位置参数【必选参数】,默认参数,包裹位置参数,包裹关键字参数同时存在时
一般的顺序为:
位置参数,默认参数,包裹位置参数,包裹关键字参数
三 万能函数
def func(*args,**kwargs):
pass
四 匿名函数
**定义:**一类无需定义标识符的函数
语法: lambda 参数列表: 表达式
lambda: 声明此函数为匿名函数
参数列表中,参数与参数之间使用逗号隔开
表达式的值就是返回值
特点:结构简单,无需定义名字,不会命名冲突
调用:将匿名函数赋值给一个变量,通过调用这个变量来调用这个函数
五 zip函数
功能:将iter对象进行打包处理,他可以将打包好的对象进行解包处理
语法:zip(iter1,iter2,…) 以元素最少的可迭代对象为基准,返回zip对象[迭代器]
*解包: zip(zipobj) 使用zip函数,在zipobj前面添加*号,我们就可以对其进行解包处理,得到解包后的zip对象[迭代器]
六 装饰器
**定义:**在代码运行的期间,动态增加功能方式,我们称之为装饰器.
最简单的装饰器:
def outer(func):
def inner():
#增加的功能
return func()
return inner
外函数的作用:
1.将函数作为参数,传入到装饰器中
2.将装饰好的函数,作为一个替代版的函数返回.
[将inner函数代替了func]
装饰器的使用:
@outer
def func():
pass
@outer的作用:
1.将func传入到装饰器中
2.再调用func的时候,相当于调用outer返回的inner函数
复杂点的装饰器:
def outer(func):
def inner(参数列表):
#添加增加的功能
return func(参数列表)
return inner
注意:
1.使用内函数来接收被装饰函数的参数
2.调用被装饰的函数的时候,需要将参数传递进去。
装饰器的使用与被装饰的函数有关系,若被装饰的函数不存在参数,则使用简单装饰器即可,若被装饰的函数存在参数,则使用复杂点的装饰器.
万能装饰器:
def outer(func):
def inner(*args,**kwargs):
#
retrun func(args,kwargs)
return inner