Python基础---装饰器

一、装饰器的定义:

给函数加上一层包装层,以添加额外的处理

二、装饰器的原则

1、不修改被修饰函数的源代码
2、不修改被修饰函数的调用方式

三、示例

import time

def timer(func):                    #func的实参是index
    def wrapper(*args,**kwargs):
        start_time=time.time()      #定义一个开始时间
        func(*args,**kwargs)        #index()调用的是index()函数,先睡眠三秒,打印print("index运行时间")
        stop_time=time.time()  #定义一个结束时间
        print('运行时间为%s' %(stop_time-start_time))
    return wrapper    #wrapper函数的内存地址


@timer     #=====index=timmer(index)
def index():
    time.sleep(3)
    print("index运行时间")
def init(func):
    def wrapper(*args,**kwargs):
        res=func(*args,**kwargs)
        next(res)
        return res
    return wrapper
    

@init       #装饰器的调用方法===>get=init(get)
def get():
    while True:
        url=yield
        res=urlopen(url).read()
        print(res)

g=get()
g.send("http://www.baidu.com")
g.send('http://www.python.org')
g.send('http://www.163.com')
posted @ 2017-04-12 23:38  f_manito  阅读(266)  评论(0编辑  收藏  举报