Sådan formateres din Python-kode automatisk med sort

At skrive Python-kode er en ting, og at skrive koden i et godt format er en anden ting. Juniorprogrammerere fokuserer ofte på at sikre, at deres kode fungerer, og glemmer at formatere koden korrekt undervejs.

Hvis du skriver et lille program (med 1000 linjer med koder), kan du sandsynligvis slippe væk uden at formatere din kode.

Men efterhånden som programmer bliver mere og mere komplekse, bliver de sværere og sværere at forstå. På et eller andet tidspunkt (omkring 15.000 linjer kode) bliver det sværere at forstå den kode, du selv skrev.

Forskellen mellem at arbejde med velformateret kode og arbejde på dårligt formateret kode er som forskellen mellem at bo i et palads og at bo i et snavset hus.

Hvorfor formatering af din python-kode er vigtig

Læsbarhed

Formatering af din kode hjælper dig med at læse din kode effektivt . Det ser mere organiseret ud, og når nogen ser på din kode, får de et godt indtryk.

Det vil hjælpe i dine kodningssamtaler

Når du er i et kodningssamtale, vil interviewerne engang bryde sig, hvis du formaterer din kode korrekt. Hvis du glemmer at lave denne formatering, kan du miste dine jobmuligheder, bare på grund af din dårligt formaterede kode.

Team support

Formatering af din kode bliver vigtigere, når du arbejder i et team . Flere mennesker vil sandsynligvis arbejde på det samme softwareprojekt, og koden, du skriver, skal forstås af dine holdkammerater. Ellers bliver det sværere at arbejde sammen.

Det gør det nemt at få øje på bugs

Dårligt formateret kode kan gøre det virkelig, virkelig svært at få øje på fejl eller endda arbejde på et program. Det er også virkelig forfærdeligt at se på. Det er en forbrydelse for dine øjne.

Pylint og Flake8

De fleste Python-udviklere nyder at bruge Pylint eller Flake8 til at kontrollere deres kode for fejl og stilguider.

Pylint er et værktøj, der kontrollerer for fejl i Python. Det forsøger at håndhæve en kodningsstandard og ser efter kodelugt. Det kan også se efter bestemte typefejl, det kan anbefale forslag til, hvordan bestemte blokke kan omformuleres, og kan tilbyde dig detaljer om kodens kompleksitet.

Flake8 er et Python-bibliotek, der indpakker PyFlakes , pycodestyle og Ned Batchelder's McCabe-script . Det er et fantastisk værktøjssæt til kontrol af din kodebase mod kodestil (PEP8) , programmeringsfejl som "importeret bibliotek men ubrugt", "Udefineret navn" og kode, som ikke er indrykket.

Problemet er, at disse værktøjer kun rapporterer de problemer, de identificerer i kildekoden, og overlader byrden til Python-udviklerne at rette dem!

Men hvad nu hvis vi havde et værktøj, der kunne identificere og løse problemet på samme tid? Sort er et værktøj, der giver dig mulighed for at identificere fejl og formatere din pythonkode på samme tid. Således gør det dig mere produktiv.

Introduktion til sort

Fra projektet README:

Ved at bruge sort accepterer du at afstå kontrol over detaljer i håndformatering. Til gengæld giver Black dig hastighed, determinisme og frihed fra pycodestyle, der griner om formatering. Du sparer tid og mental energi til vigtigere forhold.

Sort kan omformatere hele din fil på plads i henhold til sort kodestil. Det hjælper din hjerne med at fokusere på det problem, du vil løse, og kode løsninger, snarere end at blive distraheret af kodestruktur og mindre stilistiske forskelle.

Så lad os se, hvordan du bruger det.

Installer sort

Sort kan installeres ved at køre pip install black. Det kræver, at Python 3.6.0+ kører. Når sort er installeret, har du et nyt kommandolinjeværktøj kaldet sort tilgængeligt for dig i din skal, og du er klar til at starte!

For at komme i gang med det samme med fornuftige standardindstillinger skal du vælge den python-fil, du vil formatere, og derefter skrive sort filnavn.py i terminalen. Derefter formaterer Black din python-fil.

Nu ser vi, hvad sort kan hjælpe os med at gøre.

Formater en enkelt fil

Lad os se på dette enkle eksempel: her er mine to python-funktioner i min python-fil kaldet sample_code.py.

Du kan bruge black sample_code.pyi terminalen til at ændre formatet. Efter at have kørt sort, vil du se følgende output:

Derefter kan du åbne sample_code.py for at se formateret python-kode:

Python-koden er nu formateret, og den er mere læsbar.

Formater flere filer

For at formatere mere end en pythonfil skal du skrive black folder_name/i terminalen.

Tre pythonfiler i mappen python_with_black er blevet omformateret.

Kontrol af filer til formatering

Hvis du ikke vil have sort til at ændre din fil, men du vil vide, om sort mener, at en fil skal ændres, kan du bruge en af ​​følgende kommandoer:

black --check .: Dette kontrollerer, hvilke (n) python-fil (er) der kan formateres i den aktuelle mappe (men ændrer faktisk ikke python-filerne).

black --check --diff file_name.py : Dette viser, hvad der skal gøres med filen, men ændrer ikke filen.

Skift antal tegn pr. Linje

Bemærk, at sort som standard er 88 tegn for sin linjelængde, men du kan ændre det ved hjælp af "-l" eller "- -linjelængde".

For eksempel at ændre til 60 tegn: black -l 60 python_file.py.

Sort i Jupyter Notebook

For brugere af Jupyter-notesbøger kan du stadig formatere din python-kode automatisk med denne enkle udvidelse kaldet Jupyter Black. Denne udvidelse omformaterer / prettificerer kode i en notesbogs kodecelle med sort.

Jupyter Black-udvidelsen giver

  • En knap til værktøjslinjen.
  • En tastaturgenvej til omformatering af den aktuelle kodecelle (standard: Ctrl-B).
  • En tastaturgenvej til omformatering af hele kodeceller (standard: Ctrl-Shift-B).

Installer Jupyter Black

Sørg først for, at du har installeret jupyter-contrib-nbextensions og sort, og kør derefter følgende kommandoer.

jupyter nbextension install //github.com/drillan/jupyter-black/archive/master.zip — user

Aktiver derefter udvidelsen ved at køre:

jupyter nbextension enable jupyter-black-master/jupyter-black 

Nu kan du begynde at formatere din pythonkode i hver notesbogcelle.

Vælg først den notesbogcelle, du vil formatere din pythonkode, og klik derefter på udvidelsesknappen kaldet Sort.

Klik derefter på knappen Jupyter Black:

Editor Integration

Du kan integrere sort med dine yndlingsredaktører. I øjeblikket understøtter Black PyCharm / IntelliJ IDEA, Wing IDE, Vim, Visual Studio Code, Sublime Text 3, Atom / Nuclide, Kakoune og Thonny. Følg instruktionerne her for at integrere sort med din foretrukne editor.

Hvis du vil lære mere om sort, anbefaler jeg at se PyCon 2019-foredraget af Łukasz Langa.

Hvis du har lært noget nyt eller haft glæde af at læse denne artikel, skal du dele det, så andre kan se det. Indtil da, vi ses i det næste indlæg! Jeg kan også nås på Twitter @Davis_McDavid.