Можно ли заранее объявить функцию в 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 необходимо объявить функцию вперед:
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
были предварительно определены.
Является ли единственным решением реорганизовать код и всегда ставить определения перед вызовами?