Przewodnik po stylu Pythona sugeruje grupowanie importów w następujący sposób:
Import należy pogrupować w następującej kolejności:
- standardowe importy bibliotek
- powiązany import stron trzecich
- import lokalnych aplikacji / bibliotek
Jednak nie wspomina o tym, jak powinny wyglądać dwa różne sposoby importu:
from foo import bar
import foo
Istnieje wiele sposobów ich sortowania (załóżmy, że wszystkie te importy należą do tej samej grupy):
najpierw
from..import
więcimport
from g import gg from x import xx import abc import def import x
najpierw
import
więcfrom..import
import abc import def import x from g import gg from x import xx
kolejność alfabetyczna według nazwy modułu, ignorując rodzaj importu
import abc import def from g import gg import x from xx import xx
PEP8 nie wspomina o preferowanej kolejności, a funkcje „importu po czyszczeniu” niektóre IDE prawdopodobnie po prostu robią to, co preferuje twórca tej funkcji.
Szukam innego PEP wyjaśniającego to lub odpowiedniego komentarza / e-maila od BDFL (lub innego programisty Python core). Prosimy nie publikować subiektywnych odpowiedzi określających własne preferencje.
źródło
Ctrl+F
stały czas bez względu na to, jak zorganizujesz import ...)Odpowiedzi:
Import jest generalnie sortowany alfabetycznie i opisywany w różnych miejscach poza PEP 8.
Moduły posortowane alfabetycznie są szybsze w czytaniu i wyszukiwaniu . W końcu w Pythonie chodzi o czytelność. Ponadto łatwiej jest sprawdzić, czy coś jest zaimportowane, i unika się powielania importu
W PEP 8 nie ma nic, co dotyczy sortowania, więc wszystko zależy od wyboru tego, czego używasz.
Według nielicznych odniesień z renomowanych witryn i repozytoriów również popularność, porządek alfabetyczny jest drogą.
na przykład tak:
LUB
Oficjalne repozytorium Reddit stwierdza również, że generalnie należy stosować zamawianie importu PEP-8. Jest jednak kilka dodatków
Bibliografia:
PS: narzędzie isort automatycznie sortuje import.
źródło
import x
ifrom y import z
stwierdzeń względem siebie. W twojej odpowiedzi nie widzę odpowiedzi na to pytanie. Zasadniczo powtarzasz część pytania, która już wyjaśnia sposób grupowania PEP8 według typu importu. Jeśli odpowiedź na to konkretne pytanie znajduje się w którymś z linków, zacytuj odpowiednie części.import datetime
po nim następujeimport os
dużo trudniejsze do odczytania niżimport os
śledzenieimport datetime
. A różnica w wyszukiwaniu ich według sortowania leksykalnego i bez sortowania leksykalnego jest tak banalna, że zupełnie nie ma znaczenia, nawet w najmniejszym stopniu.import _tkinter
vsimport unittest
)Zgodnie z wewnętrznymi konwencjami kodowania CIA (część przecieku WikiLeaks Vault 7 ), import Pythona należy podzielić na trzy grupy:
Import należy uporządkować leksykograficznie w tych grupach, ignorując wielkość liter:
źródło
from x import y
powinno być przed, czy pofrom y import x
- czy to nazwa modułu, czy faktyczny import decyduje o zamówieniu?PEP 8 rzeczywiście nic o tym nie mówi. Nie ma żadnej konwencji w tym punkcie i nie oznacza to, że społeczność Pythona musi ją absolutnie definiować. Wybór może być lepszy dla projektu, ale najgorszy dla innego ... To kwestia preferencji, ponieważ każde rozwiązanie ma wady i zalety. Ale jeśli chcesz postępować zgodnie z konwencjami, musisz uszanować podaną przez siebie główną kolejność:
Na przykład Google zaleca na tej stronie, aby import był posortowany leksykograficznie w każdej kategorii (standardowa / osoby trzecie / Twoja). Ale na Facebooku, Yahoo i tak dalej, to może inna konwencja ...
źródło
Gorąco polecam ponowne uporządkowanie-import-pythona . Następuje po drugiej opcji zaakceptowanej odpowiedzi, a także integruje się z pre-commitem , co jest bardzo pomocne.
źródło
Wszystkie
import x
zestawienia należy posortować według wartości,x
a wszystkiefrom x import y
zestawienia według wartościx
alfabetu, a posortowane grupyfrom x import y
zdań muszą znajdować się po posortowanej grupieimport x
zdań.źródło
Wydaje mi się, że zaakceptowana odpowiedź jest nieco zbyt szczegółowa. Oto TLDR:
Przewodnik po stylach kodu Google
Tak więc trzecia opcja jest poprawna:
źródło