** 装饰器的定义**
就是给已有函数增加额外功能的函数,它本质上就是一个闭包函数。
装饰器的功能特点:
不修改已有函数的源代码
不修改已有函数的调用方式
给已有函数增加额外的功能
python装饰器‘@’的原理就是:@fun 就是 f=fun(f):
# 添加一个登录验证的功能
def fun(fn):
def inner():
print("请先登录....")
fn()
return inner
def f():
print("发表评论")
# 使用装饰器来装饰函数
f =fun(f)
f()
执行结果:
请先登录....
发表评论
# 添加一个登录验证的功能
def fun(fn):
print("装饰器函数执行了")
def inner():
print("请先登录....")
fn()
return inner
# 使用语法糖方式来装饰函数
@fun
def f():
print("发表评论")
f()
执行结果:
请先登录....
发表评论
说明:
@fun 等价于 f = fun(f)
装饰器的执行时间是加载模块时立即执行。