Можно ли переслать-объявить функцию в Python? Я хочу отсортировать список, используя мою собственную функцию cmp
до ее объявления.
print "\n".join([str(bla) for bla in sorted(mylist, cmp = cmp_configs)])
Я организовал свой код, чтобы поместить определение метода cmp_configs
после вызова. Ошибка с этой ошибкой:
NameError: name 'cmp_configs' is not defined
Есть ли способ "объявить" cmp_configs
до его использования? Это сделает мой код более чистым?
Я предполагаю, что у некоторых людей возникнет соблазн сказать мне, что я должен просто реорганизовать свой код, чтобы у меня не было этой проблемы. Однако бывают случаи, когда это, вероятно, неизбежно, например, при реализации некоторых форм рекурсии. Если вам не нравится этот пример, предположим, что у меня есть случай, в котором действительно необходимо переслать объявление функции.
Рассмотрим этот случай, когда в Python будет требоваться функция forward-decloring:
def spam():
if end_condition():
return end_result()
else:
return eggs()
def eggs():
if end_condition():
return end_result()
else:
return spam()
Если ранее были определены end_condition
и end_result
.
Является единственным решением для реорганизации кода и всегда ставить определения перед вызовами?