Why do we need `*args` in decorator? : <pre><code>def pass_thru(func_to_decorate):
    def new_func(*args, **kwargs):  #1
        print("Function has been decorated.  Congratulations.")
        # Do whatever else you want here
        return func_to_decorate(*args, **kwargs)  #2
    return new_func


def print_args(*args):
    for arg in args:
        print(arg)


a = pass_thru(print_args)
a(1,2,3)

&gt;&gt; Function has been decorated.  Congratulations.
1
2
3
</code></pre>

<p>I understand that <code>*args</code> is used in #1 since it is a function declaration. But why is it necessary to write <code>*args</code> in #2 even if it not a function declaration? </p>
