Я использую декоратор с функциональным синтаксисом, как описано here.Локальная переменная, на которую ссылаются перед присвоением декоратора
Я перехожу через список dict. В этом цикле я обертываю общую функцию с помощью декоратора, берущего параметр. Затем я вызываю завернутую функцию с текущим значением dict в качестве параметров.
Моя проблема в том, что я получаю ошибку local variable 'generic_evaluator' referenced before assignment
.
Вот мой код:
Заинтересованный декоратор:
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
А вот место, где я обернуть generic_evaluator
функцию с log
декоратора.
for evaluation in generic_evaluations:
generic_evaluator = log(evaluation['suffix'])(generic_evaluator)
generic_evaluator(evaluation['suffix'], evaluation['id'])
EDIT
Это будет, вероятно, более ясно, с этим кусок кода в дополнение:
@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
Почему вы думаете, что это должно сработать. Здесь: 'log (оценка ['suffix']) (generic_evaluator)' вы используете 'generic_evaluator', который еще не назначен. Отсюда и ошибка. Что именно вы пытаетесь достичь? – Vikas