python - local variable referenced before assignment for decorator -
i'm using decorator functional syntax it's described here.
i loop on list of dict. in loop wrap generic function decorator taking parameter. call wrapped function current dict parameters.
my problem local variable 'generic_evaluator' referenced before assignment
error.
here code:
the concerned decorator:
def log(logfile_name): def inner_log(func): def wrapped(*args, **kwargs): import os ret = func() # business code... return wraps(func)(wrapped) return inner_log
and here place wrap generic_evaluator
function log
decorator.
for evaluation in generic_evaluations: generic_evaluator = log(evaluation['suffix'])(generic_evaluator) generic_evaluator(evaluation['suffix'], evaluation['id'])
edit
it'll more clear piece of code in addition:
@tictoc def generic_evaluator(suffix_url, id): xml = etree.parse(get_resource(base_url + "/" + suffix_url + "/" + str(id))) links = fetch_urls_from_xml(xml) return links
if generic_evaluator
global function, , want rebind global name generic_evaluator
, declare name global:
global generic_evaluator
if don't want rebind global name, use different local name , initialise it:
local_generic_evaluator = generic_evaluator
this answer gives explanation of what's going on.
Comments
Post a Comment