Est-il possible de déclarer en avant une fonction en Python? Je veux trier une liste en utilisant ma propre cmp
fonction avant qu'elle ne soit déclarée.
print "\n".join([str(bla) for bla in sorted(mylist, cmp = cmp_configs)])
J'ai organisé mon code pour mettre la définition de cmp_configs
méthode après l'invocation. Il échoue avec cette erreur:
NameError: name 'cmp_configs' is not defined
Existe-t-il un moyen de «déclarer» la cmp_configs
méthode avant qu'elle ne soit utilisée? Cela rendrait mon code plus propre?
Je suppose que certaines personnes seront tentées de me dire que je devrais simplement réorganiser mon code pour ne pas avoir ce problème. Cependant, il y a des cas où cela est probablement inévitable, par exemple lors de l'implémentation de certaines formes de récursivité. Si vous n'aimez pas cet exemple, supposez que j'ai un cas dans lequel il est vraiment nécessaire de transmettre déclarer une fonction.
Considérez ce cas où la déclaration avant d'une fonction serait nécessaire en Python:
def spam():
if end_condition():
return end_result()
else:
return eggs()
def eggs():
if end_condition():
return end_result()
else:
return spam()
Où end_condition
et end_result
ont été définis précédemment.
La seule solution est-elle de réorganiser le code et de toujours mettre les définitions avant les appels?