Dans le code de production de notre société, nous essayons de suivre les règles suivantes.
Nous plaçons les importations au début du fichier, juste après la docstring du fichier principal, par exemple :
"""
Registry related functionality.
"""
import wx
# ...
Maintenant, si nous importons une classe qui est l'une des rares dans le module importé, nous importons le nom directement, de sorte que dans le code nous devons seulement utiliser la dernière partie, par exemple :
from RegistryController import RegistryController
from ui.windows.lists import ListCtrl, DynamicListCtrl
Il existe cependant des modules qui contiennent des dizaines de classes, par exemple la liste de toutes les exceptions possibles. Ensuite, on importe le module lui-même et on y fait référence dans le code :
from main.core import Exceptions
# ...
raise Exceptions.FileNotFound()
Nous utilisons le import X as Y
aussi rarement que possible, car cela rend difficile la recherche de l'utilisation d'un module ou d'une classe particulière. Parfois, cependant, vous devez l'utiliser si vous souhaitez importer deux classes qui ont le même nom, mais qui existent dans des modules différents, par exemple :
from Queue import Queue
from main.core.MessageQueue import Queue as MessageQueue
En règle générale, nous ne faisons pas d'importations à l'intérieur des méthodes - elles rendent simplement le code plus lent et moins lisible. Certains peuvent trouver que c'est un bon moyen de résoudre facilement le problème des importations cycliques, mais une meilleure solution est la réorganisation du code.