装饰器的进阶版本
装饰器的练习题(认证功能)
装饰器的固定模板
装饰器的语法糖(简化代码)
有参装饰器(最复杂)
装饰器不是一个新的概念,而是空间名称,闭包函数等等的组合就是装饰器
装饰:给函数增加额外的功能
器:就是工具
装饰器的核心思想:在不改变原有函数的代码情况和原有调用方式的基础上增加额外的功能
def index():
pass
index()
'''给index函数统计执行时间'''
储备知识:
time模块
import time # 模块
1.时间戳,他是执行的这一刻距离1970-1-1的秒数
print(tine.time.())
2.原地等待三秒
def index():
time.sleep(3)
print('from index')
# 1. 在函数执行之前打印一个时间节点
start_time = time.time()
index()
# 2. 等待函数执行完毕之后,在打印一个时间节点
end_time = time.time()
# 3. 总的执行时间就是两个的差值
print(end_time - start_time)
例:统计函数的执行时间
一定要记住装饰器的核心思想:在不改变原函数的代码情况和原因调用方式的基础上,增加额外的功能。
调用index函数之前,需要输入用户名和密码,并且用户名和密码必须正确
def outer(func):
def inner():
print('函数执行之前要执行的代码')
res = func()
print('函数执行之后要执行的代码')
return res
return inner
装饰器语法糖的执行流程:
把语法糖下面紧贴着的函数名当成参数传递给装饰器函数参数