59 votes

importer plusieurs fonctions à partir d'un module Python

J'importe beaucoup de fonctions depuis un module

Est-il préférable d'utiliser

 from my_module import function1, function2, function3, function4, function5, function6, function7

ce qui est un peu désordonné, mais évite d'inonder l'espace de noms actuel avec tout de ce module ou

 from my_module import *

Ce qui a l'air bien rangé mais remplira l'espace de noms avec tout de ce module.

Je ne trouve rien dans PEP8 sur la limite de combien vous devez importer par nom. Qu'est-ce qui est mieux et pourquoi ?

66voto

Kugel Points 4595

Si vous avez vraiment besoin d'autant de fonctions, vous polluez déjà votre espace de noms.

Je voudrais suggerer:

 import my_module

Ou, si my_module a un nom long, utilisez un alias :

 import my_long_module as m

45voto

agf Points 45052

Si c'est entre l'un ou l'autre, utilisez

 from my_module import function1, function2, function3, function4, function5, function6, function7

Voir « Explicit vaut mieux qu'implicite ». en import this .

Si vous voulez juste un nom plus court que my_module.function1 , il y a toujours import my_module as mod .

Pour les quelques fonctions que vous utilisez plusieurs fois (soit tapez plusieurs fois si vous voulez un nom court ou en boucle donc la vitesse d'accès est importante), il y a

 func1 = my_module.function1

16voto

Manny D Points 4682

Avec un peu de gestion, vous pouvez contrôler ce que l'import * importe. Supposons que mon_module a function1..function8 mais que vous ne voulez que les fonctions 1 à 6 disponibles. Dans votre my_module, réaffectez l'attribut __all__ :

mon_module.py :

 __all__ = ['function1', 'function2', 'function3' ...]

def function1():
   ...

# etc...

Maintenant, si vous utilisez from my_module import * , vous n'importerez que les fonctions et variables que vous avez définies dans l' __all__ de my_module.py.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X