Skip to content Skip to sidebar Skip to footer

Decorator Python Library Hide The Kwargs Inside Args

I got a pretty weird behaviour with the decorator library which is explained in the next code: from decorator import decorator @decorator def wrap(f, a, *args, **kwargs):

Solution 1:

Just because you call the function with b=2 does not make b a keyword argument; b is a positional argument in the original function. If there were no argument named b and you specified b=2, thenb would become a keyword argument.

decorator's behavior is actually the most correct; the wrapper it generates has the same signature as funcion(), whereas the wrapper made by your "homemade" decorator does not have b as a named argument. The "homemade" wrapper "incorrectly" puts b in kwargs because the signature of myfuncion(), which makes it clear that b is not a keyword arg, is hidden from the caller.

Preserving the function signature is a feature, not a bug, in decorator.

Post a Comment for "Decorator Python Library Hide The Kwargs Inside Args"