首页 > 其他 > 详细

装饰器

时间:2017-07-28 20:42:08      阅读:215      评论:0      收藏:0      [点我收藏+]

1,装饰器

本质:本质就是一个闭包函数。------装饰器是函数的重点内容,所以必须要掌握。

装饰器的功能:在不修改函数的情况下原函数增加功能。

2,装饰器的基本模型

 

def timer(func)
    def inner(*args,**kwargs)
        ‘’‘’‘’执行函数前要做的‘’‘’
            ret=func(*args,**kwargs)
        ‘‘‘‘‘‘‘执行函数后要做的‘’‘’‘’‘’
            return ret
        return inner
@timer 
def func2()
    print(‘in func2‘)
       
func2()

 

 3.有一个参数的装饰器

技术分享
def outer(flag):
    def timer(func):
        def inner(*args,**kwargs):
            if flag:
                print(‘‘‘执行函数之前要做的‘‘‘)
            re = func(*args,**kwargs)
            if flag:
                print(‘‘‘执行函数之后要做的‘‘‘)
            return re
        return inner
    return timer

@outer(False)
def func():
    print(111)

func()
View Code

4,有多个参数的装饰器

技术分享
def wrapper1(func):
    def inner():
        print(wrapper1 ,before func)
        func()
        print(wrapper1 ,after func)
    return inner

def wrapper2(func):
    def inner():
        print(wrapper2 ,before func)
        func()
        print(wrapper2 ,after func)
    return inner

@wrapper2
@wrapper1
def f():
    print(in f)

f()
View Code

这个代码执行后的效果是,先执行wrapper1的before,再执行wrapper2的before---》wrapper2的after---》再执行wrapper1里的after。

顺序方面是有点绕。

 

装饰器

原文:http://www.cnblogs.com/52forjie/p/7252330.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!