装饰器高潮

Posted 七天&七天

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了装饰器高潮相关的知识,希望对你有一定的参考价值。

一、概述

我们之前介绍了大幅片的内容,感觉跟装饰器半毛钱关系都没有,其实不然,我们分别详细阐述了高阶函数和内置函数,下面我们就来讲讲什么是真正的装饰器。

 

二、装饰器定义

首先装饰器实现的条件:高阶函数+嵌套函数 =》装饰器

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

执行步骤:

  1. 执行timer函数,timer(sample_1) 返回值赋值给sample_1变量,即sample_1=timer(sample_1)
  2. 此时的sample_1的值是执行timer函数返回值deco,即sample_1=deco
  3. 所以执行sample_1,其实就是执行的是deco函数,sample_1()其实就是执行deco()函数。

以上是关于装饰器高潮的主要内容,如果未能解决你的问题,请参考以下文章

python使用上下文对代码片段进行计时,非装饰器

类中的装饰器在Pycharm中抛出警告

Python面向对象学习之八,装饰器

thymeleaf 片段渲染后重新加载 javascript

Python 制作音乐高潮副歌提取器

Python 制作音乐高潮副歌提取器