我正在使用裝飾器,其功能語法如其描述的here。爲裝飾器分配之前引用的局部變量
我循環了一個字典列表。在這個循環中,我使用裝飾器採用參數來包裝泛型函數。然後我用當前的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'])
編輯
這將是可能與這段代碼除了更加清晰:
@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(evaluation ['suffix'])(generic_evaluator)'你正在使用'generic_evaluator',它還沒有被賦值。因此錯誤。你究竟想達到什麼目的? – Vikas