3.21.1 Esempi

Le seguenti funzioni emulano quello che era la definizione standard di importazione fino a Python 1.4 (senza nomi di moduli gerarchici). (Questa implementazione non potrà lavorare in quella versione, in quanto find_module() è stato esteso e load_module() è stato aggiunto nella 1.4.)

import imp
import sys

def __import__(name, globals=None, locals=None, fromlist=None):
    # Percorso veloce: controlla se il modulo è già stato importato.
    try:
        return sys.modules[name]
    except KeyError:
        pass

    # se una delle seguenti chiamate solleva un'eccezione,
    # c'è un problema che non possiamo gestire -- lo gestirà il chiamante.

    fp, pathname, description = imp.find_module(name)
    
    try:
        return imp.load_module(name, fp, pathname, description)
    finally:
        #  Siccome possiamo uscire tramite 
        #+ un'eccezione, chiudete fp esplicitamente.
        if fp:
            fp.close()

Un esempio più completo che implementa gerarchicamente i nomi del modulo e include una funzione reload()può venire trovato nel modulo knee. Il modulo knee può venire trovato in Demo/imputil/ nei sorgenti della distribuzione Python.

Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.