Python 装饰器(day11)

装饰器的固定格式

def timer(func):

  def inner(*args,**kwargs):

    #在函数前执行的代码

    ret=func(*args,**kwargs)

    #在函数前执行的代码   

    return ret

  return inner

@timer     #函数1=timer(函数1)

def 函数名1():

  pass

@timer     #函数2=timer(函数2)

def 函数名2():

  pass

函数名1()

函数名2()

- 装饰器的主要功能:

  - 在不改变函数调用方式的基础上在函数的前、后添加功能。

  - 本质:一个闭包函数

- 带参的装饰器

 
flag=True
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(flag)
def func():
    print(111)

func()
 
posted @ 2017-11-26 15:47  莫逆ll  阅读(55)  评论(0)    收藏  举报