Programování

Styl Pythonu: 5 nástrojů k vyčištění kódu Pythonu

Teoreticky je jakýkoli kód Pythonu v pořádku, pokud je syntakticky správný a běží podle plánu. V praxi chcete ve svých projektech přijmout konzistentní styl, nejlépe ten, který se řídí vlastními doporučeními stylu Pythonu. Dobrou zprávou je, že to nemusíte dělat ručně. Ekosystém Pythonu obsahuje celou řadu nástrojů, od vysoce zaměřených po rozsáhlé, aby bylo zajištěno, že zdrojový kód Pythonu dodržuje konvence stylů.

V tomto článku prozkoumáme čtyři populární nástroje pro kontrolu stylů kódu Pythonu a jeden pro konzistentní přeformátování kódu. IDE Pythonu, jako je PyCharm nebo Visual Studio Code, je podporují buď nativně, nebo s příponou, takže je lze snadno integrovat do pracovního postupu vývoje.

Pycodestyle

PEP 8 je dokument, který vysvětluje kódovací konvence Pythonu - vše od toho, zda použít tabulátory nebo mezery při odsazení (použít čtyři mezery, problém vyřešen) až po to, jak pojmenovat proměnné a objekty. Pycodestyle je modul Pythonu, který kontroluje kód Pythonu podle doporučení PEP 8 a poskytuje zprávu o tom, kde je analyzovaný kód mimo specifikaci.

Pycodestyle neposkytuje automatické opravy problémů; to je na tobě. Pycodestyle je ale vysoce konfigurovatelný, což vám umožňuje potlačit určité druhy chyb nebo analyzovat pouze konkrétní soubory ve zdrojovém stromu. A téměř každé IDE s podporou Pythonu také podporuje Pycodestyle, takže je to snadná volba pro univerzální kompatibilitu, ne-li funkčnost.

Mnoho linterů kódu v Pythonu může v Pythonu fungovat jako moduly a Pycodestyle není výjimkou. Můžete jej použít k programovému ověření kódu, například jako součást testovací sady.

Nejlepší pro:Základní ověření shody PEP 8.

8. autopep

Autopep8 pokračuje tam, kde Pycodestyle končí. Využívá Pycodestyle k určení, jaké změny je třeba provést, a poté přeformátuje kód tak, aby odpovídal poskytnutým návrhům. Existující soubory lze na místě přeformátovat nebo zapsat do nových souborů. Autopep8 také opravuje řadu dalších problémů, které se mohou vklouznout, například vyčištění kódu převedeného z Pythonu 2 na Python 3 nebo soubory, které mají smíšené značky konce řádku. A Autoprep8 lze programově použít k přeformátování kódu dodaného jako řetězce.

Nejlepší pro: Převádění souborů do souladu s PEP-8.

Flake8

Flake8 zabalí několik Pythonových liniových a kódových nástrojů do jednoho balíčku. Spolu s PyFlakes, který používá kontrolu syntaxe k detekci základních chyb, a Pycodestyle, o kterém jsme diskutovali výše, poskytuje Flake8 další nástroj pro kontrolu „cyklomatické složitosti“ projektu - to znamená počet nezávislých kódových cest nalezených v programu . (Cyklomatická složitost je potenciálně užitečnou metrikou, pokud chcete například zabránit tomu, aby se základní modul stal příliš nepodstatným.) Na konci každé analýzy poskytne Flake8 percentilovou metriku pro celkovou kvalitu analyzovaného kódu, což je užitečné způsob, jak rychle získat představu o tom, které části kódové základny jsou nejproblematičtější.

Flake8 má také systém zásuvných modulů, takže liniové lze spojit se závazky Git nebo jinými automatizovanými akcemi - například k odeslání problematického kódu přeformátovači.

Nejlepší pro:Hodnocení celkové kvality kódu se zvláštními doporučeními.

Pylint

Pylint je pravděpodobně nejvíce široce používaný a podporovaný Pythonový linter tam. Stejně jako ostatní vyhledává chyby a odchylky od kódovacích standardů v kódu Pythonu a nabízí změny, jak tyto chyby opravit.

Pylint je také pravděpodobně nejvíce komplic kontrolorů kódu v tom smyslu, že vás může varovat před mnoha problémy s vaším kódem, z nichž některé nemusí být ve vašem konkrétním kontextu ani relevantní. Výsledky mohou být podrobné, ale lze je také přizpůsobit tak, aby vyhovovaly zvláštnostem konkrétního projektu.

Pylint hledá pět postupně problematičtějších tříd emisí. „Konvence“ jsou porušení PEP 8 nebo jiných pravidel konzistence v Pythonu. „Refaktory“ označují vůně kódu, běžné chyby nebo kód, který by mohl být přepracován tak, aby byl efektivnější nebo méně matoucí, například cyklické importy nebo soubory s příliš mnoha podobnými řádky, které by mohly být zhuštěny do společné funkce. „Varování“ jsou problémy specifické pro Python, například nedosažitelný kód (vše povrátit se ve funkci) nebo třídy chybí__init__ metoda. „Chyby“ jsou skutečné chyby kódu, jako nedefinované proměnné, a „závažné“ problémy, které brání Pylintovi v běhu.

Opět platí, že to, co dělá Pylint nejužitečnější a nejtěžší, je množství zpětné vazby, kterou dává. Dobrou zprávou je, že pro ty, kteří to chtějí naladit, lze Pylintovu výřečnost a členitost upravit podle projektu nebo dokonce podle souboru. Navíc můžete čerpat z řady doplňků Pylint, které přidávají konkrétní druhy kontrol, například příliš složitý kód (dlouhé řetězce-lis atd.) nebo obložení pro zastaralé vestavěné moduly.

Nejlepší pro:Kontrola kvality polévek na ořechy pro kód za předpokladu, že vám nevadí vyladit jeho nastavení, aby nedošlo k přetížení.

Černá

Černá není nástroj na analýzu linteru nebo kódu, ale nástroj pro vynucování stylu jako způsobu, jak zajistit lepší kvalitu kódu. Z tohoto důvodu pohodlně sedí vedle ostatních zde popsaných nástrojů, protože je to způsob, jak se preventivně vyhnout mnoha základním chybám ve stylu.

Černá je popsána jako „nekompromisní formátovač kódu“ - nekompromisní, protože kromě délky řádku nemá žádné nastavitelné možnosti. Černé přeformátování Pythonského kódu do jedinečného, ​​konzistentního a čitelného stylu, vycházející z interních pravidel pro řešení složitých problémů, jako jsou víceřádkové výrazy, takže i ty budou důsledně přeformátovány.

Jednou z nabízených výhod používání černé je to, že řeší všechny spory ohledně formátování, takže eliminuje „bikeshedding“ a také snižuje produkci linteru. Nemusíte se dohadovat o tom, jak formátovat kód pro projekt, nebo dokonce hodně z toho dělat ručně. Stačí použít Black a je hotovo; můžete dokonce nakonfigurovat mnoho IDE pro automatické formátování kódu pomocí Black. Další výhodou je, že to dělásakra zavazuje čistší, protože snižuje počet změn provedených v daném souboru.

Nejlepší pro: Bičování kódových základen do základní stylistické shody hromadně.

Jak udělat více s Pythonem:

  • Jak pracovat s datovým typem seznamu Python
  • Jak zabalit aplikace v Pythonu s Aktovkou BeeWare
  • Jak spustit Anacondu bok po boku s ostatními Pythony
  • Jak používat datové třídy Pythonu
  • Začněte s asynchronizací v Pythonu
  • Jak používat asyncio v Pythonu
  • 3 kroky k generální opravě asynchronního prostředí Pythonu
  • Jak používat PyInstaller k vytvoření spustitelných souborů Pythonu
  • Výukový program pro Cython: Jak zrychlit Python
  • Jak chytře nainstalovat Python
  • Jak spravovat projekty v Pythonu pomocí Poetry
  • Jak spravovat projekty Pythonu pomocí Pipenv
  • Virtualenv a venv: Vysvětlení virtuálních prostředí Pythonu
  • Python virtualenv a venv dělá a nedělá
  • Vysvětlení vláken a podprocesů v Pythonu
  • Jak používat debugger Pythonu
  • Jak používat timeit k profilování kódu Pythonu
  • Jak používat cProfile k profilování kódu Pythonu
  • Jak převést Python na JavaScript (a zpět)
$config[zx-auto] not found$config[zx-overlay] not found