J'importe beaucoup de fonctions d'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 ce module ou
from my_module import *
Ce qui semble bien rangé mais remplira l'espace de noms avec tout ce module.
Je ne trouve rien dans PEP8 sur la limite de la quantité à importer par nom. Quel est le meilleur et pourquoi?
Si vous avez vraiment besoin de tant de fonctions, vous polluez déjà votre espace de noms.
Je voudrais suggerer:
import my_module
Ou, si mon_module a un nom long, utilisez un alias:
import my_long_module as m
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". dans 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 (tapez plusieurs fois pour avoir un nom court ou dans une boucle pour que la vitesse d'accès soit importante), il y a
func1 = my_module.function1
Avec un peu de gestion, vous pouvez contrôler ce qui importe * importe. Supposons que votre my_module possède function1..function8 mais que vous souhaitez uniquement rendre les fonctions 1 à 6 disponibles. Dans votre my_module, réaffectez le __all__
attribut:
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 __all__
attribut de my_module.py.