Ohjelmointi

12 pyytonia jokaiselle ohjelmointitarpeelle

Kun valitset Python ohjelmistokehitykseen, valitset suuren kieliekosysteemin, jossa on runsaasti paketteja, jotka kattavat kaikenlaiset ohjelmointitarpeet. Mutta kirjastojen lisäksi kaikesta graafisen käyttöliittymän kehityksestä koneoppimiseen voit valita myös joukon Python-ajonaikoja - ja jotkut näistä ajonajoista saattavat sopia paremmin käsillä olevaan käyttötapaukseen kuin toiset.

Tässä on lyhyt esittely Python-jakeluista vakiototeutuksesta (CPython) nopeuteen optimoituihin versioihin (PyPy), erityiskäyttöön (Anaconda, ActivePython), eri kielien ajonaikoihin (Jython, IronPython) ja jopa leikkaamiseen- reunakokeilu (PyCopy, MesaPy).

CPython

CPython on Pythonin vertailutoteutus, vakioversio, jota kaikki muut Python-inkarnaatiot odottavat. CPython on kirjoitettu C-muodossa, kuten nimestä käy ilmi, ja sen tuottaa sama ihmisryhmä, joka on vastuussa kaikista Python-kieltä koskevista ylätason päätöksistä.

CPython-käyttötapaukset

Koska CPython on Pythonin viitetoteutus, se on optimointiensa suhteen varovaisin. Tämä on suunnittelua. Pythonin ylläpitäjät haluavat, että CPython on mahdollisimman laajasti yhteensopiva ja standardoitu Python-toteutus.

CPython on paras valinta, kun yhteensopivuus ja vaatimustenmukaisuus Python-standardien kanssa ovat tärkeämpiä kuin raaka suorituskyky ja muut huolenaiheet. CPython on hyödyllinen myös asiantuntijalle, joka haluaa työskennellä Pythonin kanssa sen perustavanlaatuisimmassa inkarnaatiossa ja joka on halukas luopumaan tietyistä mukavuuksista.

Esimerkiksi CPythonin kanssa sinun on tehtävä hieman enemmän nostoa virtuaalisten ympäristöjen määrittämiseksi. Muut distrot (erityisesti Anaconda) tarjoavat enemmän automaatiota työtilan asetusten ympärille.

CPython-rajoitukset

CPythonilla ei ole suorituskyvyn optimointeja, jotka löytyvät muista Python-versioista. Suorituskyvyn vuoksi ei ole alkuperäistä JIT-kääntäjää (just-in-time), ei nopeutettuja matematiikkakirjastoja eikä kolmannen osapuolen lisäyksiä. Nämä ovat kaikki asioita, joita voit lisätä itse, mutta niitä ei ole niputettu. Jälleen tämä kaikki on suunniteltu, jotta varmistetaan mahdollisimman suuri yhteensopivuus ja annetaan CPythonin toimia referenssitoteutuksena, mutta se tarkoittaa, että kaikki suorituskyvyn optimoinnit ovat kehittäjän vastuulla.

Lisäksi CPython tarjoaa vain perustason työkalut Pythonin kanssa työskentelyyn. Esimerkiksi pip-paketinhallinta hankkii ja asentaa paketteja Pythonin natiivista PyPI-pakettivarastosta. Pip jopa asentaa valmiiksi käännetyt binäärit (pyöränjakelumuodon kautta), jos kehittäjä tarjoaa ne, mutta se ei asenna paketeilla mahdollisesti olevia riippuvuuksia ulkopuolella PyPI: stä.

Liittyvä video: Kuinka Python tekee ohjelmoinnista helpompaa

IT-tekniikalle täydellinen Python yksinkertaistaa monenlaista työtä järjestelmän automaatiosta huipputeknisillä aloilla, kuten koneoppiminen.

Anaconda Python

Anaconda, tuottaja Anaconda, Inc. (aiemmin Continuum Analytics), on suunniteltu Python-kehittäjille, jotka tarvitsevat jakelua kaupallisen tarjoajan tukemana ja tukisuunnitelmilla yrityksille. Anaconda Pythonin tärkeimmät käyttötapaukset ovat matematiikka, tilastot, tekniikka, data-analyysi, koneoppiminen ja niihin liittyvät sovellukset.

Anaconda Python -käyttötapaukset

Anaconda niputtaa monet yleisimmistä kaupallisessa ja tieteellisessä Python-työssä käytetyistä kirjastoista - SciPy, NumPy, Numba ja niin edelleen - ja tekee niistä monien muiden saataville mukautetun paketinhallintajärjestelmän kautta.

Anaconda erottuu muista jakeluista siinä, miten se integroi kaikki nämä kappaleet. Asennettuna Anaconda tarjoaa työpöytäsovelluksen - Anaconda Navigatorin -, joka tekee Anaconda-ympäristön kaikista näkökohdista kätevän käyttöliittymän kautta. Komponenttien löytäminen, pitäminen ajan tasalla ja työskentely niiden kanssa on paljon helpompaa kättelyssä Anacondan kanssa kuin CPythonin kanssa.

Toinen siunaus on tapa, jolla Anaconda käsittelee komponentteja Python-ekosysteemin ulkopuolelta, jos niitä tarvitaan tiettyyn pakettiin. conda Erityisesti Anacondalle luotu pakettienhallinta hoitaa sekä Python-pakettien että ulkopuolisten ohjelmistojen ulkoisten ohjelmistovaatimusten asennuksen.

Anaconda Python -rajoitukset

Koska Anaconda sisältää niin monia hyödyllisiä kirjastoja ja voi asentaa vielä enemmän vain muutamalla näppäimen painalluksella, Anaconda-asennuksen koko voi olla paljon suurempi kuin CPython. CPythonin perusasennus on noin 100 Mt; Anaconda-asennukset voivat kasvaa gigatavuiksi. Tämä voi olla ongelma tilanteissa, joissa sinulla on resurssirajoituksia.

Yksi tapa vähentää Anacondan jalanjälkeä on asentaa Miniconda, riisuttu Anacondan versio, joka sisältää vain absoluuttisen vähimmäismäärän kappaleita, joita tarvitaan nousuun ja toimintaan. Sen jälkeen voit lisätä paketteja Minicondaan mielesi mukaan silmällä, kuinka paljon tilaa jokainen kappale vie.

ActivePython

Anacondan tavoin ActivePythonin luo ja ylläpitää voittoa tavoitteleva yritys - tässä tapauksessa ActiveState, joka markkinoi useita kieliajoaikoja monikielisen Komodo IDE: n kanssa.

ActivePython-käyttötapaukset

ActivePython on suunnattu yrityskäyttäjille ja datatieteilijöille - ihmisille, jotka haluavat käyttää Pythonia, mutta eivät halua kuluttaa paljon vaivaa Python-asennuksen kokoamiseen ja hallintaan. ActivePython käyttää Pythonin tavallista pip pakettien hallintaa, mutta toimittaa myös muutama sata yhteistä kirjastoa tarkistettuina paketteina, sekä joitain yleisiä kirjastoja, joissa on kolmansien osapuolten riippuvuuksia, kuten Intel Math Kernel Library.

ActivePython-rajoitukset

Yksi mahdollinen haitta ActivePythonin lähestymistavalle ulkoisten riippuvuuksien sisältävien pakettien käsittelyssä. Jos haluat päivittää projektin uudempaan versioon, jolla on monimutkaiset riippuvuudet (esim. TensorFlow), sinun on päivitettävä myös ActivePython-asennuksesi. Ympäristöissä, joissa kehitys on yleensä sidottu tiettyyn projektiversioon, tämä ei ole ongelma. Mutta ympäristöissä, joissa kehitys pyrkii seuraamaan huippuluokan versioita, se voi aiheuttaa ongelman.

PyPy

CPython-tulkin pudotuskorvaus PyPy nopeuttaa Python-ohjelmien suorittamista just-in-time (JIT) -kokoelmalla. Suorituskyvyn kasvu voi olla dramaattista suoritettavasta tehtävästä riippuen.

PyPy-käyttötapaukset

Yleinen valitus Pythonista yleensä ja erityisesti CPythonista on nopeus. Oletuksena Python toimii monta kertaa hitaammin kuin C, joskus satoja kertoja hitaammin. PyPy JIT-kääntää Python-koodin konekielelle ja tarjoaa keskimäärin 7,7-kertaisen nopeuden CPythoniin nähden. Jotkut tehtävät suoritetaan jopa 50 kertaa nopeammin.

Parasta on, että kehittäjä ei vaadi vain vähän tai ei lainkaan ponnisteluja näiden voittojen vapauttamiseksi. Vaihda CPython PyPy: lle, ja pääosin olet valmis.

PyPy-rajoitukset

PyPy on aina toiminut parhaiten ”puhtaiden” Python-sovellusten kanssa. Python-paketit, jotka ovat yhteydessä C-kirjastoihin, kuten NumPy, eivät ole menestyneet yhtä hyvin sen takia, että PyPy on emuloinut CPythonin alkuperäisiä binaarisia rajapintoja. Ajan myötä PyPyn kehittäjät ovat kuitenkin hämmentäneet tätä asiaa ja tehneet PyPystä paljon yhteensopivamman useimpien C-laajennuksista riippuvien Python-pakettien kanssa. Lyhyesti sanottuna C-laajennusten tuki on edelleen rajallinen, mutta paljon vähemmän kuin aiemmin.

Toinen mahdollinen haittapuoli PyPy: n kanssa on ajonaika. Windowsin ydin CPython-ajonaika, lukuun ottamatta vakiokirjastoa, on noin 4 Mt, kun taas PyPy-ajonaika on noin 32 Mt. Huomaa myös, että PyPy on jo pitkään korostanut Pythonin 2.x-haaraa, joten esimerkiksi PyPy for Python 3.x on tällä hetkellä saatavana Windowsille vain 32-bittisenä beetatestiversiona. (PyPy on saatavana 64-bittisissä versioissa Python 2.x: lle ja 3.x: lle Linuxille ja MacOS: lle.)

Jython

JVM (Java Virtual Machine) toimii ajonaikana monille kielille Java-kielen lisäksi. Pitkä luettelo sisältää Groovy, Scala, Clojure, Kotlin ja kyllä, Python Jython-projektin kautta.

Jython-käyttötapaukset

Jython kääntää Python 2.x -koodin JVM-tavukoodiksi ja suorittaa tuloksena olevan ohjelman JVM: llä. Joissakin tapauksissa Jython-kääntämä ohjelma toimii nopeammin kuin CPython-vastine, mutta ei aina.

Suurin etu, jonka Jython tarjoaa, on suora yhteentoimivuus muun Java-ekosysteemin kanssa. Javaa käytetään jopa laajemmin kuin Pythonia. Pythonin suorittaminen JVM: llä antaa Python-kehittäjille mahdollisuuden hyödyntää kirjastojen ja kehysten valtavaa ekosysteemiä, jota he eivät muuten pystyisi käyttämään. Samalla tavalla Jython sallii Java-kehittäjien käyttää Python-kirjastoja.

Jythonin rajoitukset

Jythonin suurin haittapuoli on, että se tukee vain Pythonin 2.x-haaraa. Python 3.x: n tukea on kehitteillä, mutta se on ollut jonkin aikaa. Toistaiseksi mitään ei ole julkaistu.

Huomaa myös, että vaikka Jython tuo Pythonin JVM: ään, se ei tuo Pythonia Androidiin. Koska Jythonista ei ole tällä hetkellä oikeaa Android-porttia, Jythonia ei voida käyttää Android-sovellusten kehittämiseen.

IronPython

Aivan kuten Jython on Pythonin toteutus JVM: llä, IronPython on Pythonin toteutus .Net-ajonaikaisella tai CLR-kielellä (Common Language Runtime). IronPython antaa CLR: n DLR: n (Dynamic Language Runtime) antaa Python-ohjelmille mahdollisuuden toimia samalla dynaamisuudella kuin CPythonissa.

IronPython-käyttötapaukset

Kuten Jython, IronPython on silta. Suuri käyttötapaus on yhteentoimivuus Pythonin ja .Net-maailmankaikkeuden välillä. Olemassa olevat .Net-kokoonpanot voidaan ladata IronPython-ohjelmiin käyttämällä Pythonin alkuperäistä tuonti- ja objektinkäsittelysyntaksi. On myös mahdollista kääntää IronPython-koodi kokoonpanoon ja suorittaa se sellaisenaan tai kutsua sitä muilta kieliltä. Huomaa kuitenkin, että kokoonpanossa olevaa MSIL: ää (Microsoft Intermediate Language) ei voida käyttää suoraan muilta .Net-kieliltä, ​​koska se ei ole yhteisen kielimäärityksen mukainen.

IronPythonin rajoitukset

Kuten Jython, IronPython tukee tällä hetkellä vain Python 2.x: ää. IronPython 3.x -sovelluksen luominen on kuitenkin käynnissä.

WinPython

Kuten nimestä käy ilmi, WinPython on Python-jakelu, joka on luotu nimenomaan Microsoft Windows -käyttäjille. CPythonin aikaisemmat Windows-versiot eivät olleet hyvin suunniteltuja, ja Windows-käyttäjien oli vaikea hyödyntää Python-ekosysteemin täyttä hyötyä. CPythonin Windows-versio on parantunut ajan myötä, mutta WinPython tarjoaa edelleen monia asioita, joita ei löydy CPythonista.

WinPython-käyttötapaukset

WinPythonin tärkein vetovoima on, että se on erillinen Python-versio. Sitä ei tarvitse asentaa koneeseen, jossa se toimii; se on vain purettava hakemistoon. Tästä syystä WinPython on hyödyllinen tapauksissa, joissa ohjelmistoa ei voida asentaa tiettyyn järjestelmään, tilanteissa, joissa ennalta määritetty Python-ajonaika on jaettava yhdessä sen kanssa suoritettavien sovellusten kanssa, tai jos Pythonin useita versioita on suoritettava rinnakkain häiritsemättä toisiaan.

WinPython myös niputtaa joukon datatieteellisiä paketteja - NumPy, Pandas, SciPy, Matplotlib jne., Jotta niitä voidaan käyttää heti ilman lisäasennuksia. Mukana on myös C / C ++ -kääntäjä, koska monilla Windows-koneilla ei ole sellaista, ja monet Python-laajennukset vaativat tai voivat käyttää sitä.

WinPython-rajoitukset

Yksi WinPythonin rajoitus on, että se saattaa sisältää liian paljon oletuksena joissakin käyttötapauksissa. Tämän korjaamiseksi WinPythonin tekijät toimittavat jokaisesta WinPython-versiosta nollaversion, joka sisältää vain tuotteen mahdollisimman vähäisen asennuksen. Lisää paketteja voidaan lisätä myöhemmin joko Pythonin omilla pip työkalu tai WinPythonin WPPM-apuohjelma.

Kannettava Python

Python Portable on CPythonin ajonaikainen itsenäinen paketti. Se on peräisin PortableDevApps-kokoelmasta, joka sisältää samankaltaisia ​​itsenäisiä sovelluksia.

Python Portable -tapaukset

Kuten WinPython, Python Portable sisältää joukon paketteja tieteelliseen laskentaan - Matplotlib, Numba, SymPy, SciPy, Cython ja muut. Samoin kuin WinPython, Python Portable toimii ilman, että sitä tarvitsee virallisesti asentaa Windows-isäntään; se voi asua missä tahansa hakemistossa tai siirrettävässä asemassa. Mukana on myös Spyder IDE ja Pythonin pip-paketinhallinta, joten voit lisätä, muuttaa tai poistaa paketteja tarpeen mukaan.

Python Portable -rajoitukset

Toisin kuin WinPython, Python Portable ei sisällä C / C ++ -kääntäjää. Sinun on toimitettava C-kääntäjä, jotta voit käyttää Cythonilla kirjoitettua (ja siten C: ksi käännettyä) koodia.

Kokeelliset Python-jakelut

Nämä jakelut tekevät merkittäviä muutoksia Pythoniin - joko siksi, että he käyttävät Pythonia lähtökohtana jotain täysin uutta varten, tai siksi, että ne tekevät strategisia muutoksia tavalliseen Pythoniin. Yleensä näitä Pythoneja ei vielä suositella tuotantokäyttöön.

Jos asut Python 2.x -koodipohjan kanssa lähitulevaisuudessa, saatat haluta tutustua artikkeliin kokeellisista Python-jakeluista, jotka pitävät Python 2.x: n elossa.

MicroPython

MicroPython tarjoaa pienen osan Python-kielestä, joka voi toimia erittäin matalilla laitteilla, kuten mikrokontrollereilla. MicroPython toteuttaa Python 3.4: n joillakin eroilla. MicroPython-koodin kirjoittaminen on helppoa, jos tunnet Pythonin, mutta nykyinen koodi ei välttämättä toimi sellaisenaan.

Pycopy