IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
5.2. Importation de modules avec from module import

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 ?

  • Quand vous devez accéder fréquemment aux attributs et méthodes et que vous ne voulez pas taper le nom de module sans arrêt, utilisez from module import.
  • Quand vous voulez n'importer que certains attributs et méthodes, utilisez from module import.
  • Quand le module contient des attributs ou des fonctions ayant des noms déjà utilisés dans votre module, vous devez utiliser import module pour éviter les conflits de nom.

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