Python基礎---裝飾器

1、裝飾器的定義:

給函數加上一層包裝層,以添加額外的處理

2、裝飾器的原則

一、不修改被修飾函數的源代碼
二、不修改被修飾函數的調用方式

3、示例

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')
相關文章
相關標籤/搜索