码迷,mamicode.com
首页 > 其他好文 > 详细

装饰器高潮

时间:2017-08-13 01:07:13      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:tar   time()   没有   实现   高阶函数   概述   strong   print   ret   

一、概述

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

 

二、装饰器定义

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

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()函数。

装饰器高潮

标签:tar   time()   没有   实现   高阶函数   概述   strong   print   ret   

原文地址:http://www.cnblogs.com/lin-777/p/7352022.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!