Python装饰器18-传参数给被装饰函数

使用示例

from functools import wraps

def dec(func):
    @wraps(func)
    def wrapper(*args, **kwargs):
        kwargs['name'] = 'no'
        kwargs['value'] = 'v'
        return func(*args, **kwargs)
    return wrapper

@dec
def foo(p1, p2, p3, name, value, p4='a'):
    print('p1: {}, p2: {}, p3:{}, name: {}, value:{}, p4: {}'.format(
        p1, p2, p3, name, value, p4
    ))


# p1,p2, p3是位置参数
# name,value 是关键字参数
# p4 默认参数

foo('a', 'b', 'c')
foo('a1', 'b1', 'c1', name = 'name')

小结

主要关注如果装饰器会修改被装饰函数的参数时,如何去定义被装饰的函数

你可能感兴趣的:(Python装饰器18-传参数给被装饰函数)