Programmēšana

Python stils: 5 rīki, lai notīrītu jūsu Python kodu

Teorētiski jebkurš Python kods ir kārtībā, ja vien tas ir sintaktiski pareizs un darbojas, kā paredzēts. Praksē jūs vēlaties savā projektā pieņemt konsekventu stilu, vēlams, lai to vadītu pēc paša Python stila ieteikumiem. Labā ziņa ir tā, ka jums tas nav jādara ar rokām. Python ekosistēma satur dažādus rīkus, sākot no ļoti fokusēta līdz plaša diapazona, lai nodrošinātu, ka Python avota kods ievēro stila konvencijas.

Šajā rakstā mēs pārbaudīsim četrus populārus rīkus, lai pārbaudītu Python koda stilus, kā arī vienu, lai koda pārformatēšana būtu konsekventa. Python IDE, piemēram, PyCharm vai Visual Studio Code, tos atbalsta gan dabiski, gan ar paplašinājumu, tāpēc tos var viegli integrēt izstrādes darbplūsmā.

Pikodils

PEP 8 ir dokuments, kurā izklāstītas Python kodēšanas konvencijas - viss, sākot no tā, vai atkāpēs jāizmanto cilnes vai atstarpes (izmantojiet četras atstarpes, problēma atrisināta) līdz mainīgo un objektu nosaukšanai. Pycodestyle ir Python modulis, kas pārbauda Python kodu ar PEP 8 ieteikumiem un sniedz ziņojumu par to, kur analizējamais kods neatbilst specifikācijām.

Pycodestyle nenodrošina automātiskus problēmu labojumus; tas ir uz jums. Bet Pycodestyle ir ļoti konfigurējams, ļaujot nomākt noteikta veida kļūdas vai parsēt tikai konkrētus failus avota kokā. Un gandrīz katrs IDE ar Python atbalstu atbalsta arī Pycodestyle, tāpēc tā ir vienkārša izvēle universālai saderībai, ja ne funkcionalitātei.

Daudzi Python koda slaidi var darboties kā moduļi Python, un Pycodestyle nav izņēmums. Jūs varat to izmantot, lai programmatiski verificētu kodu, piemēram, kā testa komplekta daļu.

Vislabāk:PEP 8 atbilstības pamata pārbaude.

Autopep8

Autopep8 uzņemas tur, kur Pycodestyle pamet. Tas izmanto Pycodestyle, lai noteiktu, kādas izmaiņas jāveic, pēc tam pārveido kodu, lai tas atbilstu sniegtajiem ieteikumiem. Esošos failus var pārformatēt vietā vai ierakstīt jaunos failos. Autopep8 novērš arī virkni citu problēmu, kas var iezagties, piemēram, koda tīrīšana, kas pārveidots no Python 2 uz Python 3, vai faili, kuriem ir jaukti līnijas beigu marķieri. Autoprep8 var izmantot programmatiski, lai formatētu kodu, kas tiek piegādāts kā virknes.

Vislabāk: Konvertējot failus uz PEP-8 atbilstību.

8. pārsla

Flake8 vienā paketē iesaiņo vairākus Python kodēšanas un koda stila rīkus. Kopā ar PyFlakes, kas izmanto sintakses pārbaudi, lai noteiktu pamata kļūdas, un Pycodestyle, par kuru mēs runājām iepriekš, Flake8 nodrošina papildu rīku, lai pārbaudītu projekta “ciklisko sarežģītību” - tas ir, programmā atrodamo neatkarīgo kodu ceļu skaitu. . (Ciklomatiskā sarežģītība ir potenciāli noderīga metrika, ja vēlaties, lai, piemēram, pamata modulis nekļūtu pārāk nepamatots.) Katras analīzes beigās Flake8 piegādā procentiles metriku analizētā koda kopējai kvalitātei, kas ir ērts veids, kā ātri uzzināt, kuras koda bāzes daļas ir visproblemātiskākās.

Flake8 ir arī spraudņu sistēma, tāpēc savārstīšanu var savienot ar Git saistībām vai citām automatizētām darbībām, piemēram, lai problemātisko kodu ievadītu pārformatētājā.

Vislabāk:Novērtējot vispārējo koda kvalitāti, ar konkrētiem ieteikumiem.

Pylint

Pylint, iespējams, ir visplašāk izmantotais un atbalstītais Python linter. Tāpat kā citi, tā meklē kļūdas un novirzes no kodēšanas standartiem jūsu Python kodā un piedāvā izmaiņas, kā šīs kļūdas novērst.

Arī Pylint ir neapšaubāmi visvairāk komplektists no koda pārbaudītājiem tādā nozīmē, ka tas var jūs brīdināt par ļoti daudziem ar jūsu kodu saistītiem jautājumiem, no kuriem daži var pat nebūt aktuāli jūsu konkrētajā kontekstā. Rezultāti var būt izteikti, bet arī pielāgojami, lai tie atbilstu konkrētā projekta dīvainībām.

Pylints meklē piecas pakāpeniski problemātiskākas jautājumu grupas. “Konvencijas” ir PEP 8 vai citu Python konsekvences noteikumu pārkāpumi. “Refaktori” norāda kodu smakas, izplatītākās kļūdas vai kodu, kuru varētu pārstrādāt, lai būtu efektīvāks vai mazāk mulsinošs, piemēram, ciklisks imports vai faili ar pārāk daudz līdzīgu rindiņu, kurus varētu saspiest kopējā funkcijā. “Brīdinājumi” ir specifiski Python jautājumi, piemēram, nesasniedzams kods (viss aiz aatgriešanās funkcijā) vai klasēs, kurām trūkst__tajā__ metodi. “Kļūdas” ir faktiskas koda kļūdas, piemēram, nedefinēti mainīgie, un “letālas” problēmas ir tādas, kas neļauj Pylint pat darboties.

Atkal tas, kas padara Pylint gan par visnoderīgāko, gan par smagsvaru, ir tas, cik daudz atsauksmes tas sniedz. Labā ziņa ir tā, ka tiem, kas vēlas to noregulēt, Pylint daudzveidību un detalizētību var mainīt katram projektam vai pat failam. Turklāt jūs varat izmantot virkni Pylint spraudņu, kas pievieno īpaša veida pārbaudes, piemēram, pārāk sarežģītam kodam (garas ķēdesjas utt.) vai novecojušo iebūvēto ierīču savārstījums.

Vislabāk:Koda kvalitātes kontrole no zupas līdz riekstiem, pieņemot, ka jums nav iebildumu mainīt tā iestatījumus, lai izvairītos no pārslodzes.

Melns

Melns nav linteru vai kodu analīzes rīks, bet gan stila ieviešanas rīks, lai nodrošinātu labāku koda kvalitāti. Šī iemesla dēļ tā ērti atrodas blakus citiem šeit aprakstītajiem rīkiem, jo ​​tas ir veids, kā preventīvi izvairīties no daudzām stila kļūdām.

Melnā krāsa tiek raksturota kā “bezkompromisa koda formatētājs” - bezkompromisa, jo tai nav iestatāmu iespēju, izņemot līnijas garumu. Melns pārveido Python kodu vienskaitlī, konsekventā un lasāmā stilā, balstoties uz iekšējiem noteikumiem sarežģītu problēmu, piemēram, daudzrindu izteicienu, apstrādei, tāpēc pat tie tiek konsekventi pārveidoti.

Viena no melnās krāsas izmantošanas priekšrocībām ir tā, ka tā atrisina visus strīdus par formatēšanu, tādējādi novēršot “bikeshedding” un arī mazāk izdala troksni. Jums nav jāstrīdas par to, kā formatēt projekta kodu vai pat daudz to darīt manuāli. Jūs vienkārši izmantojat melno krāsu un esat ar to galā; jūs pat varat konfigurēt daudzus IDE, lai automātiski formatētu kodu ar Black. Vēl viena apgalvotā priekšrocība ir tā, ka tā dodgit apņemas tīrāku, jo tas samazina izmaiņu skaitu, kas tiek veikts jebkurā failā.

Vislabāk: Kodu pamatu sakušana stilistiskajā atbilstībā masveidā.

Kā paveikt vairāk ar Python:

  • Kā strādāt ar Python saraksta datu tipu
  • Kā iesaiņot Python lietotnes ar BeeWare portfeli
  • Kā palaist Anakondu plecu pie pleca ar citiem pitoniem
  • Kā izmantot Python datu klases
  • Sāciet darbu ar asinhronizāciju Python
  • Kā lietot asyncio Python
  • 3 soļi līdz Python asinhronajam remontam
  • Kā izmantot PyInstaller, lai izveidotu Python izpildāmos failus
  • Cython apmācība: kā paātrināt Python
  • Kā instalēt Python viedajā veidā
  • Kā pārvaldīt Python projektus, izmantojot dzeju
  • Kā pārvaldīt Python projektus ar Pipenv
  • Virtualenv un venv: paskaidrotas virtuālās Python vides
  • Python virtualenv un venv do's un don'ts
  • Paskaidrots Python vītne un apakšprocesi
  • Kā izmantot Python atkļūdotāju
  • Kā izmantot Timeit, lai profilētu Python kodu
  • Kā izmantot cProfile Python koda profilēšanai
  • Kā konvertēt Python uz JavaScript (un atkal atpakaļ)