# 你想在装饰器中给被包装函数增加额外的参数,但是不能影响这个函数现有的调用规则。# 可以使用关键字参数来给被包装函数增加额外参数。from functools import wrapsdef optional_debug(func):@wraps(func)def wrapper(*args, debug=False, **kwargs):if debug:print('Calling', func.__name__)return func(*args, **kwargs)return wrapper@optional_debugdef spam(a, b, c):print(a, b, c)spam(1, 2, 3)print()spam(1, 2, 3, debug=True)
1 2 3Calling spam1 2 3
