Programavimas

4 „Python“ tipo tikrintuvai, kad jūsų kodas būtų švarus

Pradžioje „Python“ neturėjo tipo dekoracijų. Tai atitinka bendrą tikslą, kad kalba būtų greita ir lengva dirbti, naudojant lanksčius objektų tipus, kurie atitinka kodo rašymo vingius ir padeda kūrėjams išlaikyti kodą glaustą.

Tačiau per pastaruosius kelerius metus „Python“ papildė tipo anotacijų palaikymą, įkvėpdamas visą programinės įrangos kultūrą, skirtą „Python“ tipo tikrinimui kūrimo metu. „Python“ netikrina tipų vykdymo metu - bent jau dar ne. Tačiau pasinaudodami gero tipo tikrintuvu, važiuodami šautuvu su savimi pasirinktoje IDE, galite naudoti „Python“ tipo anotacijas, kad patikrintumėte daugelį dažniausiai pasitaikančių klaidų, kol jos nepasiekė gamybos.

Šiame straipsnyje aptarsime keturis pagrindinius „Python“ tipo tikrinimo priedus. Visi naudojasi maždaug tuo pačiu modeliu, nuskaitydami „Python“ kodą su tipo komentarais ir teikdami atsiliepimus. Bet kiekvienas siūlo savo naudingus pagrindinės koncepcijos papildymus.

Mypy

„Mypy“ buvo neabejotinai pirmoji „Python“ statinio tipo tikrinimo sistema, nes darbas su ja buvo pradėtas 2012 m., Ir ji vis dar aktyviai kuriama. Iš esmės tai yra prototipas, kaip „Python“ veikia trečiųjų šalių tipo tikrinimo bibliotekos, net jei vėliau atsirado daug kitų ir išplėtė jo funkcijas.

„Mypy“ gali veikti atskirai arba komandinėje eilutėje, arba tai gali būti redaktoriaus ar IDE linterio integracijos dalis. Daugelis redaktorių ir IDE integruoja „Mypy“; „Visual Studio Code“ „Python“ plėtinys gali tiesiogiai veikti su juo. Vykdant „Mypy“ generuoja ataskaitas apie jūsų kodo nuoseklumą, atsižvelgdama į jo pateiktą tipo informaciją.

Jei jūsų kode nėra tipo komentarų, „Mypy“ neatliks daugumos savo kodo patikrinimų. Tačiau galite pažymėti nepastebėtą kodą naudodami „Mypy“. Tai galima padaryti įvairiu griežtumu, priklausomai nuo jūsų poreikių.

Jei pradedate nuo nulio naudodami kodų bazę ir norite prevenciškai agresyvios pūkavimo strategijos, galite naudoti --griežta parinktis užkirsti kelią bet kokiam netipiniam kodui. Kita vertus, jei dirbate su sena kodų baze, kurioje nėra daug tipų apibrėžimų, galite naudoti laisvesnes parinktis, pvz., Užkirsti kelią tik netipuotiems funkcijų apibrėžimams su- neleisti neryškinti defų tuo pačiu leidžiant kitą neįvestą kodą. Ir visada galite naudoti tiesioginius komentarus, pvz # type: ignore kad atskiros eilutės nebūtų pažymėtos.

„Mypy“ gali naudoti PEP 484 failų failus, kai norite naudoti tipo užuominas modulio viešosiose sąsajose. Be to, „Mypy“ siūlo užsispyręs, įrankis, kuris automatiškai sugeneruoja failus iš esamo kodo. Nenurodytam kodui „stub“ failuose naudojami bendrieji tipai, kuriuos galite pažymėti pagal poreikį.

Tipo tipas

„Google“ sukurtas „Pytype“ skiriasi nuo tokių, kaip „Mypy“, kai daro išvadas, o ne tik tipo aprašus. Kitaip tariant, „Pytype“ bando nustatyti tipus analizuodamas kodų srautą, o ne griežtai remdamasis tipo anotacijomis.

Pytype klysta dėl švelnumo, kai tik yra prasmės tai daryti. Jei jums atliekama operacija, kuri veikia vykdymo metu ir neprieštarauja jokioms anotacijoms, „Pytype“ dėl jos nesikuklins. Tačiau tai reiškia, kad kai kurios problemos, kurias reikėtų pažymėti (pvz., Deklaruoti kintamąjį su tipu viename taške ir tada jį iš naujo apibrėžti tame pačiame kontekste), praeina nepranešus. Dokumentuose teigiama, kad tokie dalykai ateityje bus neleidžiami.

Jei nuspręsite pridėti tipo komentarus prie savo kodo, tada „Pytype“atskleisti_tipas funkcija ypač naudinga. Jei į kodą įterpsite teiginį, kuris skaito palikti_tipas (expr), „Pytype“ vertina išr ir pateikia perspėjimą, apibūdinantį jo tipą.

Atminkite, kad tam tikras „Pytype“ elgesys valdomas pridedant atributus prie paties kodo. Pvz., Jei norite sustabdyti „Pytype“ skundą dėl trūkstamų atributų ar dinamiškai nustatytų modulio narių, turite pridėti atributą _HAS_DYNAMIC_ATTRIBUTES = Tiesa prie atitinkamos klasės ar modulio, o ne nustatant kažkokius „Pytype“ konfigūracijos metaduomenis.

Autorių teisės / Pylance

Autorių teisės yra „Microsoft“ Python tipo tikrintuvas, įtrauktas į „Visual Studio Code“ plėtinio „Pylance“ dalį. Jei jau esate „VS Code“ vartotojas, „Pylance“ plėtinys yra patogiausias būdas dirbti su autorių teisėmis; tiesiog įdiekite jį ir eikite. Autorių teisės suteikia gerą „viskas viename“ tipo tikrinimo ir kodų pynimo patirtį su daugybe tų pačių patogumų ir patobulinimų kaip ir ankstesni „Python“ analizės įrankiai.

Kaip ir „Pytype“, autorių teisės gali dirbti su kodų bazėmis, kuriose nėra jokios informacijos apie tipą. Tokiais atvejais autorių teisės padarys viską, kad padarytų išvadą, kokie tipai yra žaidžiami. Taigi vis tiek galite pasiekti gerų rezultatų naudodami „Pytype“ senesnėse kodų bazėse be tipo deklaracijų. Tačiau laikui bėgant pasieksite geresnių rezultatų, kai palaipsniui pridedate tipo komentarus prie savo kodo.

Autorių teisės yra labai lanksčios būdais, papildančiais realaus pasaulio „Python“ projektų dizainą. Kaip ir kitų tipų tikrintuvus, autorių teises galima sukonfigūruoti kiekvienam projektui naudojant JSON formato konfigūracijos failą projekto kataloge. Konfigūracijos faile atskirus kelius galima išskirti (niekada netikrinti) arba ignoruoti (klaidos ir įspėjimai užblokuoti), o parinktys yra labai detalios.

„VS Code“ darbo vietose su keliomis šaknimis kiekviena gali turėti savo autorių teisių konfigūraciją, jei skirtingoms projekto dalims reikalingos skirtingos pūkavimo konfigūracijos. Tuo pačiu būdu jūs galite apibrėžti kelias projekto „vykdymo aplinkas“, kiekviena iš jų turi savo „venv“ arba importo kelius.

Pyre

„Facebook“ ir „Instagram“ kūrėjų sukurtas „Pyre“ iš tikrųjų yra du įrankiai viename: tipo tikrintuvas („Pyre“) ir statinio kodo analizės įrankis („Pysa“). Jos sukurtos dirbti kartu, kad būtų užtikrintas aukštesnis tikrinimo ir analizės lygis nei kitose priemonėse, nors vartotojas turi šiek tiek sunkiai pakelti, kad galėtų visapusiškai pasinaudoti jomis.

Pyre laikosi panašaus požiūrio į „Pytype“ ir „Mypy“. Nenurodytas kodas elgiamasi švelniau nei įvestas kodas, todėl galite pradėti nuo netipuoto „Python“ kodo bazės ir pridėti komentarus pagal funkcijas ir modulius po modulius. Modulyje įjunkite „griežtą režimą“ ir „Pyre“ pažymės visas trūkstamas anotacijas. Arba galite nustatyti griežtąjį režimą kaip numatytąjį ir atsisakyti modulio lygiu. Pyre taip pat dirbs su .pyi formato stub failais.

„Pyre“ turi galingą funkciją, leidžiančią perkelti kodų bazes į spausdintą formatą. padaryti išvadą komandinės eilutės parinktis įsisavina failą ar katalogą, daro pagrįstus spėjimus apie naudojamus tipus ir taiko failams anotacijas. Vis dėlto pirmiausia norėsite padaryti savo kodo atsargines kopijas! (Jei norite gauti informacijos apie tipą iš a bėgimas „Python“ programą, tai galite padaryti naudodami kitą „Facebook“ / „Instagram“ projektą „MonkeyType“.)

Nors „Pyre“ funkcijos atkartoja kitų čia aprašytų paketų ypatybes, „Pysa“ yra unikali. Pysa atlieka kodo „užterštumo analizę“, kad nustatytų galimas saugumo problemas, remdamasis tam tikrų programinės įrangos komponentų srautų analizės biblioteka ir žymimuoju kodu, kuris, atrodo, yra pažeidžiamas. Viskas, kas paliesta tuo kodu, taip pat bus pažymėta kaip sugadinta, tačiau galite nurodyti komponentus, kurie dezinfekuoja duomenis, ir pašalinti tuos duomenis iš užteršto grafiko.

Vienas trūkumas yra tai, kad „Pysa“ trečiųjų šalių komponentų pažeidimų analizės biblioteka vis dar yra maža, todėl gali reikėti sukurti savo modelį. Tačiau daugelis užterštų analizių yra skirtos plačiai naudojamai programinei įrangai, pvz., „Django“ žiniatinklio sistemai, „SQL Alchemy ORM“ ir „Pandas“ duomenų mokslo bibliotekai, jau nekalbant apie bendrų failų sistemos problemų analizę.

Kaip padaryti daugiau su „Python“

  • Kaip dirbti su „Python“ sąrašo duomenų tipu
  • Kaip supakuoti „Python“ programas su „BeeWare“ portfeliu
  • Kaip paleisti „Anaconda“ šalia kitų Pitonų
  • Kaip naudoti „Python“ duomenų klases
  • Pradėkite naudoti „Python“ asinchronizavimą
  • Kaip naudoti „asyncio“ Python
  • 3 žingsniai iki „Python“ asinchroninio remonto
  • Kaip naudoti „PyInstaller“, norint sukurti „Python“ vykdomuosius failus
  • „Cython“ pamoka: kaip pagreitinti „Python“
  • Kaip įdiegti „Python“ išmaniuoju būdu
  • Kaip valdyti „Python“ projektus naudojant „Poeziją“
  • Kaip valdyti „Python“ projektus naudojant „Pipenv“
  • „Virtualenv“ ir „venv“: paaiškintos „Python“ virtualios aplinkos
  • „Python virtualenv“ ir „venv do and donts“
  • Paaiškinta „Python“ sriegimas ir antriniai procesai
  • Kaip naudotis „Python“ derintuvu
  • Kaip naudoti „Timeit“, kad būtų galima nustatyti „Python“ kodą
  • Kaip naudoti „cProfile“ „Python“ kodui nustatyti
  • Kaip konvertuoti „Python“ į „JavaScript“ (ir dar kartą)
$config[zx-auto] not found$config[zx-overlay] not found