problema con getattr y otras dudas de novato...

Arnau Sanchez pyarnau en gmail.com
Mar Ene 8 18:08:48 CET 2008


Milton Galo Patricio Inostroza Aguilera escribió:

  > ¿es necesario que la definición de una función esté dentro de otra
> función? ¿Por qué?

No sé si es necesario en este caso, pero definir funciones dentro de 
otras es perfectamente aceptable (si bien no muy extendido en Python, es 
práctica común en otros lenguajes, LISP y dialectos especialmente).

Una ventaja es que te permite romper código en trozos más pequeños (a 
los que, además, debes poner un nombre), sin tener que crear más y más 
funciones en el primer nivel (que ensuciarían innecesariamente el 
espacio de nombres).

Si quieres crear código que siga paradigmas de FP (programación 
funcional) es casi inevitable hacerlo. Un ejemplo muy simple:

def procesar_elementos(elementos):
    de procesar(elemento):
        # hacer cosas
        # return resultado
    def condicion(elemento):
        # hacer cosas
        # return resultado_de_la_condicion
    # return map(procesar, filter(condicion, elementos))
    return [procesar(elemento) if condition(elemento)]

Quería completar la entrada de FP que hay en el FAQ, pero si hay algún 
experto en la sala le cedo el trabajo gustoso. Lo poco que sé de FP lo 
he aprendido resolviendo problemas del proyecto Euler, para los curiosos:

http://pyeuler.wikidot.com/

Aunque Python no es, ni por asomo, el lenguaje ideal para FP, desde que 
cuenta con iteradores y generadores se pueden hacer cosas muy 
interesantes. Para FP de verdad, hay que irse a otros lenguajes como 
Haskell.

arnau
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes





Más información sobre la lista de distribución Python-es