J'essaie de m'en tenir aux meilleures pratiques en matière d'importation de modules, j'essaie de comprendre ce que dit PEP8 à ce sujet. Disons que mon framework a des centaines de classes et quelques dizaines de paquets. Par exemple, PyQt5 ou sympy seraient de bons candidats ... quel serait le meilleur choix parmi cet ensemble?Conventions d'importation PEP8
a) Tout importer
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
print(QPoint)
print(QPixmap)
print(QApplication)
b) Importer uniquement de gros paquets et en utilisant des préfixes pour toute l'application
from PyQt5 import QtCore, QtGui, QtWidgets
print(QtCore.QPoint)
print(QtGui.QPixmap)
print(QtWidgets.QApplication)
c) importer des classes spécifiques des gros paquets
from PyQt5.QtCore import QPoint
from PyQt5.QtGui import QPixmap
from PyQt5.QtWidgets import QApplication
print(QPoint)
print(QPixmap)
print(QApplication)
L'option a) est déconseillée par PEP8, qu'en est-il de b) ou c) ... quelle est la recommandation du PEP8 à ce sujet?
Personnellement, je préfère b) si vous utilisez plusieurs objets d'un module, sinon a). Mais il n'y a pas de règle pour cela dans PEP 8. –
Il n'y a pas de réponse concrète. Si je prévois d'utiliser seulement quelques objets de chaque module, je les importe explicitement, comme dans (c). Si j'utilise beaucoup d'objets de chaque module, j'utilise habituellement (b). – Blender
Cela dépend du contexte. J'utilise toujours (c) dans les applications, et (b) dans les tutoriels, exemples, documentation, etc. Je n'utilise jamais (a) - en expérimentant dans une session interactive, je préfère utiliser 'from PyQt5 import Qt' (qui met * tout * dans un seul espace de nom). Je ne me soucie pas particulièrement de savoir si mes pratiques de codage sont bien alignées avec pep8 (même si je pense que c'est le cas pour la plupart). La chose la plus importante que pep8 a à dire est la suivante: "Sachez quand être incohérent - parfois, les recommandations du guide de style ne sont pas applicables.En cas de doute, utilisez votre meilleur jugement". – ekhumoro