Python-装饰器

在目标函数前后添加功能,但又不修改目标函数的定义,这种在代码运行期间动态增加功能的方式,称之为“装饰器”(Decorator)

import functools

# 无参数的装饰器
def log(func):
    # 不改变目标函数名称__name__
    @functools.wraps(func)
    def wrapper(*args, **kw):
        print('call %s():' % func.__name__)
        return func(*args, **kw)
    return wrapper

# 使用方法
@log
def now():
    print("2022-06-01")
import functools

# 带参数的装饰器
def log(text):
    def decorator(func):
        # 不改变目标函数名称__name__
        @functools.wraps(func)  
        def wrapper(*args, **kw):
            print('%s %s():' % (text, func.__name__))
            return func(*args, **kw)
        return wrapper
    return decorator

# 使用方法
@log('execute')
def now():
    print('2015-3-25')

你可能感兴趣的:(Python-装饰器)