You are here: Partenza > Dive Into Python > Programmazione orientata ai dati > Importare dinamicamente i moduli | << >> | ||||
Dive Into PythonPython per programmatori esperti |
Ok, abbiamo filosofeggiato abbastanza. Vediamo come si importano dinamicamente i moduli.
Per cominciare osservate come vengono importati normalmente i moduli. La sintassi import module rimanda al percorso di ricerca per trovare un modulo e lo importa per nome. Si possono anche importare più moduli contemporaneamente usando una lista separata da virgole, è stato fatto nella prima riga di codice di questo capitolo.
Adesso facciamo la stessa cosa, però con l'importazione dinamica.
>>> 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'>
Quindi __import__ importa moduli, però con una stringa come argomento. In questo caso il modulo che abbiamo importato era un parametro statico, ma poteva essere una variabile o anche il risultato di una chiamata a funzione. Inoltre la variabile a cui assegnamo il modulo può avere un nome qualsiasi o anche essere un elemento di 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)]'
Ora dovremmo essere in grado di comprendere il significato della maggior parte degli esempi di questo capitolo.
<< Programmazione data-centrica |
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | |
Mettere assieme il tutto (parte 1) >> |