Der Python-Styleguide schlägt vor, Importe wie folgt zu gruppieren:
Importe sollten in der folgenden Reihenfolge gruppiert werden:
- Standardbibliotheksimporte
- verwandte Importe von Dritten
- lokale anwendungs- / bibliotheksspezifische Importe
Es wird jedoch nichts darüber erwähnt, wie die beiden verschiedenen Arten der Einfuhr dargelegt werden sollten:
from foo import bar
import foo
Es gibt mehrere Möglichkeiten, sie zu sortieren (nehmen wir an, dass alle diese Importe zur selben Gruppe gehören):
zuerst
from..import
dannimport
from g import gg from x import xx import abc import def import x
zuerst
import
dannfrom..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 die bevorzugte Reihenfolge hierfür nicht und die "Bereinigungsimporte" -Funktionen, die einige IDEs wahrscheinlich nur tun, was auch immer der Entwickler dieser Funktion bevorzugt.
Ich suche nach einem anderen PEP, der dies oder einen relevanten Kommentar / eine relevante E-Mail von der BDFL (oder einem anderen Python-Kernentwickler) klarstellt . Bitte posten Sie keine subjektiven Antworten, die Ihre eigenen Vorlieben angeben.
quelle
Ctrl+F
ist die Zeit konstant, egal wie Sie Importe organisieren ...)Antworten:
Importe werden in der Regel alphabetisch sortiert und an verschiedenen Stellen neben PEP 8 beschrieben.
Alphabetisch sortierte Module sind schneller zu lesen und durchsuchbar . Schließlich dreht sich bei Python alles um Lesbarkeit. Außerdem ist es einfacher zu überprüfen, ob etwas importiert wurde, und es werden doppelte Importe vermieden
In PEP 8 ist nichts zum Sortieren verfügbar. Es geht also nur um die Auswahl, was Sie verwenden.
Nach wenigen Referenzen von seriösen Websites und Repositories, die ebenfalls beliebt sind, ist die alphabetische Reihenfolge der richtige Weg.
für zB so:
ODER
Das offizielle Reddit-Repository gibt außerdem an, dass im Allgemeinen die PEP-8-Importreihenfolge verwendet werden sollte. Es gibt jedoch einige Ergänzungen
Verweise:
PS: Das Dienstprogramm isort sortiert Ihre Importe automatisch.
quelle
import x
undfrom y import z
Anweisungen relativ zueinander geht. Ich sehe keine Antwort auf diese Frage in Ihrer Antwort. Sie wiederholen im Grunde einen Teil der Frage, die bereits die PEP8-Art der Gruppierung nach Importtyp erklärt. Wenn eine Antwort auf diese spezielle Frage in einigen Links enthalten ist, zitieren Sie bitte die relevanten Teile.import datetime
gefolgt vonimport os
viel schwerer zu lesen finden alsimport os
gefolgt vonimport datetime
. Und der Unterschied bei der Suche nach ihnen bei lexikalischer Sortierung gegenüber nicht lexikalisch sortiert ist so trivial, dass er auch in keiner geringfügigen Weise völlig von Bedeutung ist.import _tkinter
vsimport unittest
)Gemäß den internen Codierungskonventionen der CIA (Teil des WikiLeaks Vault 7-Lecks ) sollten Python-Importe in drei Gruppen eingeteilt werden:
Importe sollten innerhalb dieser Gruppen lexikographisch angeordnet werden, wobei der Fall ignoriert wird:
quelle
from x import y
vorher oder nachher sein sollfrom y import x
- ist es der Name des Moduls oder der tatsächliche Import, der die Reihenfolge bestimmt?Das PEP 8 sagt tatsächlich nichts darüber aus. Für diesen Punkt gibt es keine Konvention, und dies bedeutet nicht, dass die Python-Community eine unbedingt definieren muss. Eine Wahl kann für ein Projekt besser sein, für ein anderes jedoch die schlechteste ... Es ist eine Frage der Präferenzen dafür, da jede Lösung Vor- und Nachteile hat. Wenn Sie jedoch Konventionen befolgen möchten, müssen Sie die von Ihnen angegebene Hauptreihenfolge einhalten:
Beispielsweise empfiehlt Google auf dieser Seite , den Import in jeder Kategorie (Standard / Dritte / Ihre) lexikografisch zu sortieren . Aber bei Facebook, Yahoo und was auch immer ist es vielleicht eine andere Konvention ...
quelle
Ich empfehle dringend, Python-Importe neu zu ordnen . Es folgt der 2. Option der akzeptierten Antwort und lässt sich auch in das Pre-Commit integrieren , was sehr hilfreich ist.
quelle
Alle
import x
Anweisungen sollten nach dem Wert von sortiert sein,x
und allefrom x import y
Anweisungen sollten nach dem Wert vonx
in alphabetischer Reihenfolge sortiert sein, und die sortierten Gruppen vonfrom x import y
Anweisungen müssen der sortierten Gruppe vonimport x
Anweisungen folgen .quelle
Ich denke, die akzeptierte Antwort ist etwas zu ausführlich. Hier ist TLDR:
Google Code Style Guide
Die dritte Option ist also richtig:
quelle