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.
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.
 |
| from module import * en Python est comme use module in Perl. import module en Python est comme require module en Perl.
|
 |
| 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
<type 'function'>
>>> FunctionType
Traceback (innermost last):
File "<interactive input>", line 1, in ?
NameError: There is no variable named 'FunctionType'
>>> from types import FunctionType
>>> FunctionType
<type 'function'>
|
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.
|
|
FunctionType lui-même n'a pas été
défini dans cet espace de noms, il n'existe que dans le contexte
de types.
|
|
Cette syntaxe permet l'importation de l'attribut
FunctionType du module types directement dans l'espace de
noms local.
|
|
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.
 |
| 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