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