¿Es posible declarar hacia adelante una función en Python? Quiero ordenar una lista usando mi propia cmp
función antes de declararla.
print "\n".join([str(bla) for bla in sorted(mylist, cmp = cmp_configs)])
He organizado mi código para poner la definición del cmp_configs
método después de la invocación. Falla con este error:
NameError: name 'cmp_configs' is not defined
¿Hay alguna forma de "declarar" el cmp_configs
método antes de usarlo? ¿Haría que mi código se vea más limpio?
Supongo que algunas personas se verán tentadas a decirme que debería reorganizar mi código para no tener este problema. Sin embargo, hay casos en que esto es inevitable, por ejemplo, cuando se implementan algunas formas de recursión. Si no le gusta este ejemplo, suponga que tengo un caso en el que es realmente necesario reenviar la declaración de una función.
Considere este caso donde sería necesario declarar hacia adelante una función en Python:
def spam():
if end_condition():
return end_result()
else:
return eggs()
def eggs():
if end_condition():
return end_result()
else:
return spam()
Dónde end_condition
y end_result
se han definido previamente.
¿Es la única solución para reorganizar el código y siempre poner definiciones antes de las invocaciones?