>[success] # 不改变装饰函数参数情况下,通过装饰器加参数 >[danger] ##### 案例 ~~~ 1.下面案例等同 ,因为内层函数接受参数后就会直接调用装饰函数,就会产生被装饰函数加了个参数 # op = optional_debug(spam) # op(1,2,3,debug=True) ~~~ ~~~ from functools import wraps def optional_debug(func): @wraps(func) def wrapper(*args, debug=False, **kwargs): if debug: print('增加一个参数') return func(*args, **kwargs) return wrapper @optional_debug def spam(a, b, c): print(a, b, c) spam(1, 2, 3) spam(1, 2, 3, debug=True) 打印结果: 1 2 3 增加一个参数 1 2 3 ~~~