装饰器是python中的一个重要部分,我们可以通过装饰器让其他函数在不变代码的情况下添加其他功能
语法:
def 装饰器名(fn);
def 功能名(参数):
......
fn()
......
return 功能名
注意:在没有参数的情况下,我们可以不使用闭包
def add(landing):
def log():
print("日志开始记录")
landing()
print("日志记录结束")
return log
@add
def landing():
print("开始登录")
print("结束登录")
landing()
日志开始记录
开始登录
结束登录
日志记录结束
装饰器就是一个闭包函数,它通过@来将一个函数装饰到另一个函数身上来完善它的功能
注意:装饰器会自动调用函数
在装饰的函数有参数的情况下,我们需要在闭包中传入参数
def add(landing):
def log(name):
print("日志开始记录")
landing(name)
print("日志记录结束")
return log
@add
def landing(name):
print("{}开始登录".format(name))
print("结束登录")
landing("张三")
日志开始记录
张三开始登录
结束登录
日志记录结束
补充:一个函数可以有多个装饰器装饰,一个装饰器也可以装饰多个函数