¿Es posible reenviar-declarar una función en Python? Quiero ordenar una lista usando mi propia función cmp
antes de que se declare.¿Es posible reenviar-declarar una función en Python?
print "\n".join([str(bla) for bla in sorted(mylist, cmp = cmp_configs)])
he organizado mi código para poner la definición de cmp_configs
método después de la invocación. Se produce este error:
NameError: name 'cmp_configs' is not defined
¿Hay alguna manera de "declarar" cmp_configs
método antes de que se usa? ¿Haría que mi código se vea más limpio?
Supongo que algunas personas sentirán la tentación de decirme que debería reorganizar mi código para que no tenga este problema. Sin embargo, hay casos en que esto es probablemente 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 para reenviar declarar una función.
consideran este caso en el prospectivas declarar una función sería necesario 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 anteriormente.
¿Es la única solución para reorganizar el código y siempre poner las definiciones antes de las invocaciones?
en resumen, si tiene _if \ _ \ _ nombre \ _ \ _ == '\ _ \ _ main \ _ \ _': main() _ como la última línea de su script, ¡todo estará bien! –
@FilipePina No he entendido tu comentario. ¿Por qué no puedes poner la última línea del código simplemente como 'main()'? –
@SanjayManohar: para evitar ejecutarlo en 'import your_module' – jfs