考虑示例:
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/