函数三 ——装饰器函数

一、装饰器的本质:一个闭包函数

  装饰器的功能:在不修改原函数及其调用方式的情况下对原函数功能进行扩展

  

import time
def func1():  #被装饰的函数
    print('in func1')
def timmer(func):  #装饰器函数
    def inner():
        start = time.time()
        func()
        end = time.time()
        print(end - start)        
    return inner
func1 = timmer(func1)
func1()
import time
def timmer(func):  #装饰器函数
    def inner():
        start = time.time()
        func()
        end = time.time()
        print(end - start)
    return inner
@timmer   #语法糖   @装饰器函数名    #==> func1 = timmer(func1)
def func1():  #被装饰的函数
    print('in func1')
func1()

 

装饰一个带参数的函数

import time
def timmer(func):
    def inner(m):
        start = time.time()
        func(m)
        end = time.time()
        print(end - start)
    return inner
@timmer  #===>func1 = timmer(func1)
def func1(a):
    print(a)
func1(5)

 

被修饰函数中带有返回值

import time
def timmer(f):  #装饰器函数
    def inner():
        start = time.time()
        ret = f()    #被装饰的函数
        end = time.time()
        print(end - start)
        return ret
    return inner
@timmer                #语法糖   @装饰器函数名
def func():             #被装饰的函数
    time.sleep(0.1)
    print('hello world')
    return '新年好'
# func = timmer(func)
ret = func()
print(ret)

 

posted @ 2017-12-28 16:32  笨笨侠  阅读(189)  评论(0编辑  收藏  举报