一、概述
我们之前介绍了大幅片的内容,感觉跟装饰器半毛钱关系都没有,其实不然,我们分别详细阐述了高阶函数和内置函数,下面我们就来讲讲什么是真正的装饰器。
二、装饰器定义
首先装饰器实现的条件:高阶函数+嵌套函数 =》装饰器
import time def timer(func): #func = sample_1 timer(sample_1) def deco(): start_time = time.time() func() #run sample_1() stop_time = time.time() print("the func time is %s" %(start_time-stop_time)) return deco @timer #timer来装饰sample_1 def sample_1(): #相当于 sample_1 = timer(sample_1) time.sleep(3) print(‘it is sample_1‘) #直接执行函数 sample_1() #输出结果 it is sample_1 the func time is 3.0023279190063477
执行步骤:
- 执行timer函数,timer(sample_1) 返回值赋值给sample_1变量,即sample_1=timer(sample_1)
- 此时的sample_1的值是执行timer函数返回值deco,即sample_1=deco
- 所以执行sample_1,其实就是执行的是deco函数,sample_1()其实就是执行deco()函数。
时间: 2024-12-19 16:30:05