python 装饰器

装饰器的主要功能:

在不改变函数调用方式(不改变原函数)的基础上在函数的前,后添加功能

装饰器的固定格式

def timmer(func):
    def inner(*args,**kwargs):
        set = func(*args,**kwargs)
        return set
    return inner  # 传内部函数的名称,不能加括号


@timmer  # @装饰器函数名   # func = timmer(func)
def func(*args,**kwargs):  # 被装饰器函数
    time.sleep(0.01)
    print('大家好')


ret=func()
print(ret)

带参数的装饰器

def outer(flag):
    def one(func):
        def two(*args,**kwargs):
            if flag:
                print('''执行之前''')
            ret= func(*args,**kwargs)
            if flag:
                print('''执行之后'')
            return ret
        return two
    return one

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

func()

多个装饰器装饰一个函数

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()

 

posted @ 2019-04-06 08:24  Boy^  阅读(99)  评论(0)    收藏  举报