我试图找到一种方法将我的函数的默认参数传递给装饰器。我不得不说我对装饰器业务相当陌生,所以也许我只是没有正确理解它,但我还没有找到任何答案。
所以这是我从 Pythonfunctools.wraps手册页修改的示例。
from functools import wraps
def my_decorator(f):
@wraps(f)
def wrapper(*args, **kwds):
print('Calling decorated function')
print('args:', args)
print('kwargs:', kwds)
return f(*args, **kwds)
return wrapper
@my_decorator
def example(i, j=0):
"""Docstring"""
print('Called example function')
example(i=1)
Run Code Online (Sandbox Code Playgroud)
我也希望j=0通过。所以输出应该是:
Calling decorated function
args: ()
kwargs: {'i': 1, 'j': 0}
Called example function
Run Code Online (Sandbox Code Playgroud)
但相反我得到
Calling decorated function
args: ()
kwargs: {'i': 1}
Called example function
Run Code Online (Sandbox Code Playgroud)