装饰器
开放封闭原则:
代码扩展进行开放
修改源代码及调用方式封闭
在不修改源代码及调用方式条件下,额外的添加新功能就是装饰器
import time
def index():
time.sleep(2) #秒
print('这是小明写的功能')
start_time=time.time() #时间戳
index()
print(time.time()-start_time)语法糖 -- @装饰函数函数名
顺序:先写装饰器,再写被装饰的函数
将语法糖写在被装饰的函数正上方
装饰器进阶
有参装饰器
在标准装饰器的外层,套了一层,多套一层就需要额外的调用一层
语法糖:@auth(参数)
多个装饰器装饰一个函数
多个装饰器装饰一个函数时,先执行离被装饰函数最近的装饰器
小技巧:V
递归
递:一直传参
归:返回
有效递归:
不断调用自己本身(无效递归 -- 死递归)
有明确的终止条件
递归的最大深度(层次)官方说明1000,实际测试约993、994、997、998等