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
그리고 나는 log
장식과 generic_evaluator
기능을 포장 장소 :
당해 장식 :
여기 내 코드입니다.
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