码迷,mamicode.com
首页 > 编程语言 > 详细

python装饰器

时间:2017-11-05 22:21:08      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:dex   return   timer   port   page   logs   添加   com   time()   

一:开放封闭原则,对扩展是开放的,对修改是封闭的

二:装饰器,装饰器本质可以是任意可调用的对象,被装饰的对象也可以是任意可调用对象
装饰器的功能是:
在不修改被装饰对象源代码以及调用方式的前提下为其添加新功能

原则:
1.不修改源代码
2.不修改调用方法
目标:添加新功能
装饰器的语法:在被装饰对象的正上方的单独一行。@装饰器名字
import time
import random
#装饰器
def timmer(func):#func=index
    #func=index
    def wrapper():
        start_time=time.time()
        func()#index
        stop_time=time.time()
        print(‘run time is %s‘ %(stop_time-start_time))
    return wrapper
#被装饰函数
@timmer              #index=timer(index)
def index():
    time.sleep(random.randrange(1,5))
    print(‘welecome to index page‘)

@timmer
def home():
    time.sleep(random.randrange(1, 3))
    print(‘welecome to HOME page‘)
# index=timmer(index) #index=wrapper
# index() #wrapper()                        @timmer等于这两步
index()
home()

可以加多个装饰器,计算顺序是自下而上,自上而下运行
装饰器修订版本
import time
import random
#装饰器
def timmer(func):
    def wrapper(*args,**kwargs):
        start_time=time.time()
        res=func(*args,**kwargs)
        stop_time=time.time()
        print(‘run time is %s‘ %(stop_time-start_time))
        return res
    return wrapper
#被装饰函数
@timmer
def index():
    time.sleep(random.randrange(1,5))
    print(‘welecome to index page‘)
res1=index()
print(res1)

  

python装饰器

标签:dex   return   timer   port   page   logs   添加   com   time()   

原文地址:http://www.cnblogs.com/gpd-Amos/p/7788983.html

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