Der Python Style Guide schlägt vor, Importe wie folgt zu gruppieren:
Importe sollten in der folgenden Reihenfolge gruppiert werden:
- standardbibliothekimporte
- verbundene Einfuhren Dritter
- importe lokaler Anwendungen/Bibliotheken
Es wird jedoch nichts erwähnt, wie die zwei verschiedenen Arten der Einfuhr gestaltet werden sollten:
from foo import bar
import foo
Es gibt mehrere Möglichkeiten, sie zu sortieren (nehmen wir an, alle diese Importe gehören zu derselben Gruppe):
zuerst from..import
, dann import
from g import gg
from x import xx
import abc
import def
import x
zuerst import
, dann from..import
import abc
import def
import x
from g import gg
from x import xx
alphabetische Reihenfolge nach Modulnamen, wobei die Art des Imports ignoriert wird
import abc
import def
from g import gg
import x
from xx import xx
PEP8 erwähnt nicht die bevorzugte Reihenfolge dafür und die "Cleanup-Importe" -Features, die einige IDEs wahrscheinlich nur tun, was der Entwickler dieses Features bevorzugt.
Ich suche nach einem anderen PEP, das diesen oder einen relevanten Kommentar/E-Mail von BDFL (oder einem anderen Python-Kernentwickler) erläutert. Bitte keine subjektiven Antworten angeben, die Ihre Präferenz angeben.
Importe werden im Allgemeinen alphabetisch sortiert und an verschiedenen Stellen neben PEP 8 beschrieben.
Alphabetisch sortierte Module sind schneller lesbar und durchsuchbar. Immerhin dreht sich bei Python alles um die Lesbarkeit ... Es ist auch einfacher zu prüfen, ob etwas importiert wird, und vermeidet doppelte Importe
In PEP 8 steht nichts zum Sortieren zur Verfügung. Es ist also alles über die Wahl, was Sie verwenden.
Nach wenigen Referenzen von seriösen Sites und Repositories auch Beliebtheit, ist alphabetisch die Reihenfolge.
für zB so:
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
Das offizielle Repository von Reddit besagt auch, dass im Allgemeinen die PEP-8-Importreihenfolge verwendet werden sollte. Es gibt jedoch einige Ergänzungen
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
Verweise:
PS: Das Dienstprogramm isort sortiert Ihre Importe automatisch.
Gemäß den CIA-internen Codierungskonventionen (Teil des WikiLeaks Vault 7-Lecks ) sollten Python-Importe in drei Gruppen unterteilt werden:
Importe sollten lexikographisch innerhalb dieser Gruppen angeordnet werden, wobei der Fall ignoriert wird:
import foo
from foo import bar
from foo.bar import baz
from foo.bar import Quux
from Foob import ar
Die PEP 8 sagt dazu nichts. Es gibt keine Konvention für diesen Punkt, und das bedeutet nicht, dass die Python-Community eine absolut definieren muss. Eine Wahl kann für ein Projekt besser sein, für ein anderes jedoch die schlechteste. Dies ist eine Frage der Präferenzen, da jede Lösung Vor- und Nachteile hat. Wenn Sie Konventionen befolgen möchten, müssen Sie die von Ihnen zitierte Reihenfolge einhalten:
Zum Beispiel: Google empfiehlt auf dieser Seite, dass import in jeder Kategorie lexikographisch sortiert werden sollte (Standard/Dritte/Ihre). Aber bei Facebook, Yahoo und was auch immer, es ist vielleicht eine andere Konvention ...
Alle import x
-Anweisungen sollten nach dem Wert von x
und alle from x import y
-Anweisungen in alphabetischer Reihenfolge nach dem Wert von x
sortiert werden. Die sortierten Gruppen von from x import y
-Anweisungen müssen der sortierten Gruppe von import x
-Anweisungen folgen.
import abc
import def
import x
from g import gg
from x import xx
from z import a