Is '*args' useful in this example code?
Arif Khokar
akhokar1234 at wvu.edu
Mon Jan 4 22:29:20 EST 2016
On 01/04/2016 09:16 PM, Robert wrote:
> Hi,
>
> I find an example code on wrap at this link:
> http://stackoverflow.com/questions/308999/what-does-functools-wraps-do
>
> Here is the code:
> ////////
> def logged(func):
> def with_logging(*args, **kwargs):
> print func.__name__ + " was called"
> return func(*args, **kwargs)
> return with_logging
> ///////
>
> I understand now, but I feel the args usage is weird. I don't see any way
> to use *args and **kwargs in above code. What is your opinion on it?
The reason the inner method has *args, and **kwargs as parameters is so
that it doesn't have to exactly match the signature of func. If func
was a method that took 3 parameters, then if you didn't use *args, you
would have to define the with_logging method to also take 3 parameters.
If func takes one or more keyword parameters, then you would have to
add that to the definition of the with_logging method if you don't use
**kwargs.
IOW, using *args and **kwargs in the wrapper method definition removes
the requirement that its parameter list exactly match func's parameter list.
More information about the Python-list
mailing list