装饰器
装饰器的特点:
- 不修改已有函数的源代码
- 不修改已有函数的调用方式
- 给以后函数添加额外的功能
# 定义装饰器
def decorator(func): # 如果闭包函数的参数有且只有一个并且是函数类型,那么这个闭包函数称为装饰器
print("装饰器执行了")
def inner():
# 在内部函数里面对已有函数进行装饰
print("已添加登陆验证")
func()
return inner
# 装饰器的语法糖写法: @装饰器名称,装饰器的语法糖就是在装饰以后函数的时候写法更加简单
@decorator # comment = decorator(comment) 装饰器语法糖对该代码进行了封装 comment=inner
def comment():
print("发表评论")
# 已添加登陆验证
# 发表评论
# # 调用装饰器对已有函数进行装饰 , comment=inner
# comment = decorator(comment)
# 调用方式不变
comment()
# 装饰器的执行时机: 当当前模块加载完成以后,装饰器会立即执行,对已有函数进行装饰