叠加多个装饰器
1.加载顺序:自下而上
2.执行顺序:自上而下
格式为:
def outer1(func):
def inner(*args,**kwargs):
res=func(*args,**kwargs)
return res
return inner
def outer2(func):
def inner1(*args,**kwargs):
res=func(*args,**kwargs)
return res
return inner1
@outer1
@outer2
def sa():
print("x")
sa()
装饰器装饰的对象一般为函数,为装饰器添加功能毫无意义,因此装饰器加载顺序是自下而上,由原函数传参至底部装饰器并返回一个新的函数体代码块,再与其上的装饰器结合
执行顺序至上而下
有参装饰器
当需要给装饰器传参时,只有两层结构的装饰器无法满足情况,因此需要叠加一层,可以接受传递的参数
三元表达式
格式为 x if 条件表达式 else y
生成式
列表生成式
字典生成式
分别将可迭代对象作为参数,并迭代取值,返回相应的格式
匿名函数
匿名函数就是只定义了一个函数的内存地址,主要用于临时使用一次的场景
Python使用lambda来创建匿名函数
lambda只是一个表达式,lambda主体是一个表达式而不是代码块,仅仅能在lambda表达式中封装有限的逻辑进去
在Python中,使用yield的函数被称为生成器(generator)
跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作
在调用生成器运行的过程中,每次运行yield时,函数会暂停并保存当前所有的运行信息返回yield的值
并在下一次执行next()方法时从当前位置继续运行
调用一个生成器函数返回的是一个迭代器对象