Python的装饰器Decorator

简介

Python中的装饰器,主要是在不改变原有函数的情况下增强这个函数的功能,本质就是一个返回函数的高阶函数

简单装饰器

定义
def log(func):
    @functools.wraps(func)    # 相当于wrapper.__name__ = func.__name__
    def wrapper(*args, **kw):
        print('start call %s' % func.__name__)
        return func(*args, **kw)
    return wrapper
使用
>>>@log    # 相当于执行语句:func1 = log(func1)
...def func1():
...    print("func1")
>>> 
>>>func1()
start call func1
func1

>>>

带参数的装饰器

定义
def log(level):
    def decorator(func):
        @functools.wraps(func)    # 相当于wrapper.__name__ = func.__name__
        def wrapper(*args, **kwargs):
            print('%s: start call %s' % (level, func.__name__))
            return func(*args, **kwargs)

        return wrapper

    return decorator
使用
@log('DEBUG')    # 相当于执行语句:func1 = log('DEBUG')(func1)
def func1():
    print("func1")

func1()
DEBUG: start call func1
func1

后续再补充,类里面的装饰器用法

未完,待续…

猜你喜欢

转载自blog.csdn.net/zhanghedong526/article/details/80174033