Le guide de style python suggère de regrouper les importations de la manière suivante:
Les importations doivent être regroupées dans l'ordre suivant:
- importations de bibliothèque standard
- importations en provenance de tiers
- importations locales spécifiques à une application/bibliothèque
Cependant, il ne mentionne rien sur la manière dont les deux types d'importation devraient être présentés:
from foo import bar
import foo
Il existe plusieurs façons de les trier (supposons que toutes les importations appartiennent au même groupe):
d'abord from..import
, puis import
from g import gg
from x import xx
import abc
import def
import x
d'abord import
, puis from..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 d '"importation de nettoyage" que certains IDE n'ont probablement fait que ce que le développeur de cette fonctionnalité a préféré.
Je recherche un autre PPE clarifiant ce point ou un commentaire/courrier électronique pertinent de BDFL (ou un autre développeur Python). S'il vous plaît, ne postez pas de réponses subjectives indiquant votre propre préférence.
Les importations sont généralement triées par ordre alphabétique et décrites à différents endroits à côté du PEP 8.
Les modules triés par ordre alphabétique sont plus faciles à lire et à rechercher. Après tout, Python est entièrement basé sur la lisibilité . En outre, il est plus facile de vérifier que quelque chose est importé et d’éviter les importations dupliquées.
Il n’existe aucun élément de tri dans PEP 8. C’est donc une question de choix de ce que vous utilisez.
Selon quelques références de sites réputés et de référentiels également populaires, l'ordre alphabétique est la solution.
pour par exemple comme ceci:
import httplib
import logging
import random
import StringIO
import time
import unittest
from nova.api import openstack
from nova.auth import users
from nova.endpoint import cloud
OR
import a_standard
import b_standard
import a_third_party
import b_third_party
from a_soc import f
from a_soc import g
from b_soc import d
Le référentiel officiel Reddit indique également qu’en général, il convient d’utiliser la commande d’importation PEP-8. Cependant, il y a quelques ajouts qui sont
for each imported group the order of imports should be:
import <package>.<module> style lines in alphabetical order
from <package>.<module> import <symbol> style in alphabetical order
Références:
PS: l'utilitaire isort trie automatiquement vos importations.
Selon les conventions de codage internes de la CIA (faisant partie de la fuite WikiLeaks Vault ), les importations de python doivent être regroupées en trois groupes:
Les importations doivent être classées lexicographiquement au sein de ces groupes, sans tenir compte des cas suivants:
import foo
from foo import bar
from foo.bar import baz
from foo.bar import Quux
from Foob import ar
Le PPE 8 n'en dit 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, chaque solution ayant 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 import soit trié lexicographiquement, dans chaque catégorie (standard/tiers/votre). Mais sur Facebook, Yahoo et autres, c'est peut-être une autre convention ...
Toutes les instructions import x
doivent être triées selon la valeur de x
et toutes les instructions from x import y
doivent être triées de la valeur de x
dans l'ordre alphabétique et les groupes d'instructions from x import y
triés doivent suivre le groupe d'instructions import x
trié.
import abc
import def
import x
from g import gg
from x import xx
from z import a