Ist es möglich, eine Funktion in Python vorwärts zu deklarieren? Ich möchte eine Liste mit meiner eigenen cmp
Funktion sortieren, bevor sie deklariert wird.
print "\n".join([str(bla) for bla in sorted(mylist, cmp = cmp_configs)])
Ich habe meinen Code so organisiert, dass die Definition der cmp_configs
Methode nach dem Aufruf eingefügt wird. Es schlägt mit diesem Fehler fehl:
NameError: name 'cmp_configs' is not defined
Gibt es eine Möglichkeit, die cmp_configs
Methode zu "deklarieren" , bevor sie verwendet wird? Es würde meinen Code sauberer aussehen lassen?
Ich gehe davon aus, dass einige Leute versucht sein werden, mir zu sagen, dass ich meinen Code einfach neu organisieren sollte, damit ich dieses Problem nicht habe. Es gibt jedoch Fälle, in denen dies wahrscheinlich unvermeidbar ist, beispielsweise bei der Implementierung einiger Formen der Rekursion. Wenn Ihnen dieses Beispiel nicht gefällt, nehmen Sie an, dass ich einen Fall habe, in dem es wirklich notwendig ist, eine Funktion weiterzuleiten.
Stellen Sie sich diesen Fall vor, in dem eine Vorwärtsdeklaration einer Funktion in Python erforderlich wäre:
def spam():
if end_condition():
return end_result()
else:
return eggs()
def eggs():
if end_condition():
return end_result()
else:
return spam()
Wo end_condition
und end_result
wurden zuvor definiert.
Ist die einzige Lösung, um den Code neu zu organisieren und Definitionen immer vor Aufrufen zu setzen?