5.2. Importation de modules avec from module import

Python fournit deux manières d'importer les modules. Les deux sont utiles et vous devez savoir quand les utiliser. Vous avez déjà vu la première, import module, à la Section 2.4, «Tout est objet». La deuxième manière accomplit la même action avec des différences subtiles mais importante dans son fonctionnement.

Voici la syntaxe de base de from module import :


from UserDict import UserDict

Cela ressemble à la syntaxe import module que vous connaissez, mais avec une différence importante : les attributs et et les méthodes du module importé types sont importés directement dans l'espace de noms local, ils sont donc disponible directement sans devoir les qualifier avec le nom du module. Vous pouvez importer des éléments précis ou utiliser from module import * pour tout importer.

NOTE
from module import * en Python est comme use module in Perl. import module en Python est comme require module en Perl.
NOTE
from module import * en Python est comme import module.* en Java. import module en Python est comme import module en Java.

Exemple 5.2. import module vs. from module import

>>> import types
>>> types.FunctionType             1
<type 'function'>
>>> FunctionType                   2
Traceback (innermost last):
  File "<interactive input>", line 1, in ?
NameError: There is no variable named 'FunctionType'
>>> from types import FunctionType 3
>>> FunctionType                   4
<type 'function'>
1 Le module types ne contient aucune méthode, seulement des attributs pour chaque type d'objet Python. Notez que l'attribut FunctionType doit être qualifié avec le nom de module, types.
2 FunctionType lui-même n'a pas été défini dans cet espace de noms, il n'existe que dans le contexte de types.
3 Cette syntaxe permet l'importation de l'attribut FunctionType du module types directement dans l'espace de noms local.
4 Maintenant FunctionType peut être référé directement, sans mentionner types.

Quand faut-il utiliser from module import ?

En dehors de ces cas, c'est une question de style et vous verrez du code Python écrit des deux manières.

Attention
Utilisez from module import * avec modération, il rend plus difficile de déterminer l'origine d'une fonction ou d'un attribut, ce qui rend le débogage et la refactorisation plus difficiles.

Pour en savoir plus sur l'importation de module