Python:传递函数的默认值';*args或**kwargs的参数
举个例子:Python:传递函数的默认值';*args或**kwargs的参数,python,python-3.x,decorator,default-value,metaclass,Python,Python 3.x,Decorator,Default Value,Metaclass,举个例子: 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}?如何仅使用decorator(对于函数)或元类(对于类
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}
?如何仅使用decorator(对于函数)或元类(对于类方法,例如\uu init\uuuu
)将函数foo
的所有默认值传递给*args
或**kwargs
?包装器只是一个普通函数。它不能“访问”包装函数的内部
你必须用内省来获得它们。见相关问题:
还要注意,如果使用
foo(5,5,42)
,则包装器将接收(5,5,42)
,但如果使用foo(5,5,42)
,则它将接收(5,5),z':42}