概念:
装饰器本质是一个函数,主要用来修饰另一个函数或者类。
作用:
在不修改被装饰函数的内容 和 不改变被装饰函数的调用方式 为前提,添加或改变原函数的功能。
参数和返回值:
传入的是一个函数,返回的也是一个函数。
说明:
装饰器需要用闭包实现,内部函数要注意形参列表一致(数量和类型)。
多个装饰器修饰,贴的近的先装饰。
语法:
def deco_fn(fx):
def fy(形参列表):
xxx
fx()
xxx
return fy
@deco_fn # 将原函数传入装饰器,等价于fz = deco_fn(fz)
def fz(形参列表):
xxx
fz()
示例:
def deco_fn(fx):
def fy():
print('+++++++++')
fx()
print('---------')
return fy
@deco_fn
def fz():
print("hello world")
fz()
# 结果输出:
# +++++++++
# hello world
# ---------