| You are here: Inicio > Inmersión en Python > Programación Funcional > Importación dinámica de módulos | << >> | ||||
Inmersión en PythonPython de novato a experto |
|||||
Bien, basta de filosofar. Hablemos sobre la importación dinámica de módulos.
Miremos primero la manera normal de importar módulos. La sintaxis de import módulo localiza por su nombre el módulo especificado en la ruta de búsqueda y lo importa. Incluso puede importar varios módulos de una vez de esta manera, con una lista separada por comas. Hicimos esto en la primera línea del script de este capítulo.
Ahora haremos lo mismo pero de forma dinámica.
>>> sys = __import__('sys')>>> os = __import__('os') >>> re = __import__('re') >>> unittest = __import__('unittest') >>> sys
>>> <module 'sys' (built-in)> >>> os >>> <module 'os' from '/usr/local/lib/python2.2/os.pyc'>
Así que __import__ importa un módulo, pero toma una cadena como argumento para hacerlo. En este caso el módulo que importó era sólo una cadena fija, pero podría ser también una variable o el resultado de invocar una función. Y la variable a la que asignemos el módulo tampoco tiene por qué coincidir con el nombre del módulo. Podría importar varios módulos y asignarlos a una lista.
>>> moduleNames = ['sys', 'os', 're', 'unittest']>>> moduleNames ['sys', 'os', 're', 'unittest'] >>> modules = map(__import__, moduleNames)
>>> modules
[<module 'sys' (built-in)>, <module 'os' from 'c:\Python22\lib\os.pyc'>, <module 're' from 'c:\Python22\lib\re.pyc'>, <module 'unittest' from 'c:\Python22\lib\unittest.pyc'>] >>> modules[0].version
'2.2.2 (#37, Nov 26 2002, 10:24:37) [MSC 32 bit (Intel)]' >>> import sys >>> sys.version '2.2.2 (#37, Nov 26 2002, 10:24:37) [MSC 32 bit (Intel)]'
Ahora debería ser capaz de juntar todo esto e imaginarse lo que hace la mayoría del código de ejemplo de este capítulo.
<< Programación "datocéntrica" |
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | |
Todo junto >> |