Python: passando os valores padrão dos argumentos da função 'para * args ou ** kwargs
Considere um exemplo:
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)
Resultado:
(5, 5) {}
Por que não(5, 5) {'z': 0}
? Como passar todos os valores padrão da funçãofoo
para*args
ou**kwargs
usando apenas decorador (para funções) ou metaclasse (para métodos de classe, por exemplo__init__
)?