小编Mik*_*olk的帖子

将默认参数传递给python中的装饰器

我试图找到一种方法将我的函数的默认参数传递给装饰器。我不得不说我对装饰器业务相当陌生,所以也许我只是没有正确理解它,但我还没有找到任何答案。

所以这是我从 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)

python arguments decorator python-decorators

11
推荐指数
3
解决办法
2850
查看次数

标签 统计

arguments ×1

decorator ×1

python ×1

python-decorators ×1