Le guide de style python suggère de regrouper les importations comme ceci:
Les importations doivent être regroupées dans l'ordre suivant:
- importations de bibliothèques standard
- importations tierces liées
- importations spécifiques à une application / bibliothèque locale
Cependant, il ne mentionne rien de la manière dont les deux modes d’importation devraient être présentés:
from foo import bar
import foo
Il existe plusieurs façons de les trier (supposons que toutes ces importations appartiennent au même groupe):
d'abord
from..import
, puisimport
from g import gg from x import xx import abc import def import x
d'abord
import
, puisfrom..import
import abc import def import x from g import gg from x import xx
ordre alphabétique par nom de module, en ignorant le type d'importation
import abc import def from g import gg import x from xx import xx
PEP8 ne mentionne pas l'ordre préféré pour cela et les fonctionnalités de "nettoyage des importations" que certains IDE ont probablement juste faire ce que le développeur de cette fonctionnalité a préféré.
Je recherche un autre PEP clarifiant ceci ou un commentaire / e-mail pertinent du BDFL (ou d'un autre développeur principal de Python). Veuillez ne pas publier de réponses subjectives indiquant votre propre préférence.
la source
Ctrl+F
temps constant, peu importe comment vous organisez les importations ...)Réponses:
Les importations sont généralement classées par ordre alphabétique et décrites à divers endroits à côté de PEP 8.
Les modules classés par ordre alphabétique sont plus rapides à lire et à rechercher . Après tout, python est une question de lisibilité. De plus, il est plus facile de vérifier que quelque chose est importé et évite les importations en double
Il n'y a rien de disponible dans PEP 8 concernant le tri, c'est donc une question de choix de ce que vous utilisez.
Selon quelques références provenant de sites et de référentiels réputés, la popularité est également un ordre alphabétique.
pour par exemple comme ceci:
OU
Le référentiel officiel de Reddit indique également qu'en général l'ordre d'importation PEP-8 doit être utilisé. Cependant, il y a quelques ajouts qui sont
Références:
PS: l' utilitaire isort trie automatiquement vos importations.
la source
import x
et lesfrom y import z
déclarations les unes par rapport aux autres. Je ne vois pas de réponse à cette question dans votre réponse. Vous reformulez essentiellement une partie de la question qui explique déjà la manière PEP8 de regrouper par type d'importation. Si une réponse à cette question spécifique se trouve dans certains des liens, veuillez citer les parties pertinentes.import datetime
suivi parimport os
beaucoup plus difficile à lire queimport os
suivi parimport datetime
. Et la différence entre les rechercher avec un tri lexical par rapport à un tri non lexical est si insignifiante qu'elle n'a aucune importance, même de quelque manière que ce soit.import _tkinter
vsimport unittest
)Selon les conventions de codage internes de la CIA (qui fait partie de la fuite de WikiLeaks Vault 7 ), les importations python doivent être regroupées en trois groupes:
Les importations doivent être classées lexicographiquement au sein de ces groupes, en ignorant la casse:
la source
from x import y
doit être avant ou aprèsfrom y import x
- est-ce le nom du module ou l'importation réelle qui détermine la commande?Le PEP 8 n'en dit en effet rien. Il n'y a pas de convention pour ce point, et cela ne signifie pas que la communauté Python doit en définir une absolument. Un choix peut être meilleur pour un projet mais le pire pour un autre ... C'est une question de préférences pour cela, puisque chaque solution a des avantages et des inconvénients. Mais si vous voulez suivre les conventions, vous devez respecter l'ordre principal que vous avez cité:
Par exemple, Google recommande dans cette page que l' importation soit triée lexicographiquement , dans chaque catégorie (standard / tiers / vôtre). Mais chez Facebook, Yahoo et peu importe, c'est peut-être une autre convention ...
la source
Je recommande vivement de réorganiser les importations python . Il suit la 2ème option de la réponse acceptée et s'intègre également dans le pré-commit , ce qui est très utile.
la source
Toutes les
import x
instructions doivent être triées par la valeur dex
et toutes lesfrom x import y
instructions doivent être triées par la valeur dex
par ordre alphabétique et les groupes d'from x import y
instructions triés doivent suivre le groupe d'import x
instructions trié .la source
J'ai l'impression que la réponse acceptée est un peu trop verbeuse. Voici TLDR:
Guide de style de code Google
Donc, la troisième option est correcte:
la source