É possível declarar adiante uma função no Python? Quero classificar uma lista usando minha própria cmpfunção antes de ser declarada.
print "\n".join([str(bla) for bla in sorted(mylist, cmp = cmp_configs)])
Organizei meu código para colocar a definição de cmp_configsmétodo após a invocação. Falha com este erro:
NameError: name 'cmp_configs' is not defined
Existe alguma maneira de "declarar" o cmp_configsmétodo antes de ser usado? Isso faria meu código parecer mais limpo?
Suponho que algumas pessoas ficarão tentadas a me dizer que eu deveria reorganizar meu código para não ter esse problema. No entanto, há casos em que isso provavelmente é inevitável, por exemplo, ao implementar algumas formas de recursão. Se você não gostar deste exemplo, suponha que eu tenha um caso em que é realmente necessário encaminhar declarar uma função.
Considere este caso em que uma função de declaração direta seria necessária no Python:
def spam():
if end_condition():
return end_result()
else:
return eggs()
def eggs():
if end_condition():
return end_result()
else:
return spam()
Onde end_conditione end_resultforam definidos anteriormente.
A única solução é reorganizar o código e sempre colocar definições antes das invocações?