首页 > 其他 > 详细

装饰器高潮

时间:2017-08-13 00:44:58      阅读:201      评论:0      收藏:0      [点我收藏+]

一、概述

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

 

二、装饰器定义

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

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

装饰器高潮

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!