无参装饰器

1.开放封闭原则

软件一旦上线后,就应该遵循开放封闭原则,即对修改源代码是封闭的,对功能的扩展是开放的。

原则如下:

1.不修改源代码

2.不修改调用方式

目的:在遵循1和2原则的基础上扩展新功能。

2.什么是装饰器?

器指的是工具,装饰指的是被装饰对象添加新功能

完整含义:装饰器即在不修改被装饰对象源代码与调用方式的前提下,为被装饰对象添加新功能,装饰器与被装饰的对象均可以是任意可调用的对象。

装饰器----->函数

被装饰的对象---->函数

import time
def index():
    time.sleep(1)
    print('welcome to index page')
    return 123

def home(name):
    time.sleep(2)
    print('welcome %s to home page'%name)

def timmer(func):
    def wrapper(*args,**kwargs):
        start_time=time.time()
        res=func(*args,**kwargs)
        stop_time=time.time()
        print(stop_time-start_time)
        return res
    return wrapper
index=timmer(index)
home=timmer(home)
index()
home('egon')
 

装饰器语法糖

比喻:

import time
def timmer(func):
    def wrapper(*args,**kwargs):
        start_time=time.time()
        res=func(*args,**kwargs)
        stop_time=time.time()
        print(stop_time-start_time)
        return res
    return wrapper

#在被装饰对象正上方单独一行,而我们编写的装饰器必须在此语法的上方
@timmer   #index=timmer(index) 
def index():
    time.sleep(1)
    print('welcome to index page')
    return 123
index()

有参装饰器:

 def auth(engine):#(接收参数)
def auth2(func):#(接收函数)
def wrapper(*args,**kwargs):#(执行目标函数)




posted on 2018-03-31 10:26  muzinianhua  阅读(84)  评论(0编辑  收藏  举报