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'',
...]