una otro modulos llamar lista libreria importar funciones funcion externas crear como clases bibliotecas archivo python functional-programming getattr

modulos - llamar funcion de otro archivo python



Cómo iterar a través de las funciones de un módulo (1)

Esta pregunta ya tiene una respuesta aquí:

Recibo esta llamada de función después de importar foo.py. Foo tiene varios métodos que necesito llamar, por ejemplo, foo.paint, foo.draw:

import foo code if foo: getattr(foo, ''paint'')()

Necesito usar un ciclo while para llamar e iterar a través de todas las funciones foo.paint, foo.draw, etc. ¿Cómo lo hago?


Puedes usar foo.__dict__ alguna manera como este:

for name, val in foo.__dict__.iteritems(): # iterate through every module''s attributes if callable(val): # check if callable (normally functions) val() # call it

Pero cuidado, esto ejecutará cada función (invocable) en el módulo. Si alguna función específica recibe algún argumento, fallará.

Una forma más elegante (funcional) de obtener funciones sería:

[f for _, f in foo.__dict__.iteritems() if callable(f)]

Por ejemplo, esto listará todas las funciones en el método math :

import math [name for name, val in math.__dict__.iteritems() if callable(val)] [''pow'', ''fsum'', ''cosh'', ''ldexp'', ...]