考虑示例:

def decorator(func):
    def wrapper(*args, **kwargs):
        print(args, kwargs)
        func(*args, **kwargs)
    return wrapper

@decorator
def foo(x, y, z=0):
    pass

foo(5, 5)

输出:
(5, 5) {}

为什么不是 (5, 5) {'z': 0} ?如何仅使用装饰器(对于函数)或元类(对于类方法,例如 foo )将函数 *args 的所有默认值传递给 **kwargs__init__

最佳答案

包装器只是一个普通的功能。它不能“访问”被包装函数的内部。

你将不得不使用内省(introspection)来获得它们。看到一个相关的问题:

How to find out the default values of a particular function's argument in another function in Python?

关于Python:将函数参数的默认值传递给 *args 或 **kwargs,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27210551/

10-13 09:15