This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author V.E.O
Recipients V.E.O
Date 2012-08-29.16:08:47
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1346256529.91.0.837970613737.issue15813@psf.upfronthosting.co.za>
In-reply-to
Content
I just learned python @ decorator, it's cool, but soon I found my modified code coming out weird problems.

def with_wrapper(param1):
    def dummy_wrapper(fn):
        print param1
        param1 = 'new'
        fn(param1)
    return dummy_wrapper

def dummy():
    @with_wrapper('param1')
    def implementation(param2):
        print param2

dummy()



I debug it, it throws out exception at print param1

UnboundLocalError: local variable 'param1' referenced before assignment

If I remove param1 = 'new' this line, without any modify operation(link to new object) on variables from outer scope, this routine might working.

Is it meaning I only have made one copy of outer scope variables, then make modification?
The policy of variable scope towards decorator is different?
History
Date User Action Args
2012-08-29 16:08:50V.E.Osetrecipients: + V.E.O
2012-08-29 16:08:49V.E.Osetmessageid: <1346256529.91.0.837970613737.issue15813@psf.upfronthosting.co.za>
2012-08-29 16:08:48V.E.Olinkissue15813 messages
2012-08-29 16:08:47V.E.Ocreate