È possibile dichiarare in avanti una funzione in Python? Voglio ordinare un elenco usando la mia cmp
funzione prima che venga dichiarato.
print "\n".join([str(bla) for bla in sorted(mylist, cmp = cmp_configs)])
Ho organizzato il mio codice per inserire la definizione del cmp_configs
metodo dopo l'invocazione. Non riesce con questo errore:
NameError: name 'cmp_configs' is not defined
C'è un modo per "dichiarare" cmp_configs
metodo prima che venga utilizzato? Renderebbe il mio codice più pulito?
Presumo che alcune persone saranno tentate di dirmi che dovrei semplicemente riorganizzare il mio codice in modo da non avere questo problema. Tuttavia, ci sono casi in cui questo è probabilmente inevitabile, ad esempio quando si implementano alcune forme di ricorsione. Se non ti piace questo esempio, supponi che io abbia un caso in cui è davvero necessario inoltrare una funzione.
Considera questo caso in cui in Python sarebbe necessaria la dichiarazione in avanti di una funzione:
def spam():
if end_condition():
return end_result()
else:
return eggs()
def eggs():
if end_condition():
return end_result()
else:
return spam()
Dove end_condition
e end_result
sono stati precedentemente definiti.
È l'unica soluzione per riorganizzare il codice e mettere sempre le definizioni prima delle invocazioni?