使用示例
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是位置參數(shù)
# name,value 是關(guān)鍵字參數(shù)
# p4 默認(rèn)參數(shù)
foo('a', 'b', 'c')
foo('a1', 'b1', 'c1', name = 'name')
小結(jié)
主要關(guān)注如果裝飾器會(huì)修改被裝飾函數(shù)的參數(shù)時(shí),如何去定義被裝飾的函數(shù)