Što je Python? Moćno, intuitivno programiranje

Iz 1991. godine programski jezik Python smatrao se popunjavanjem praznina, načinom pisanja skripti koje "automatiziraju dosadne stvari" (kako je rekla jedna popularna knjiga o učenju Pythona) ili brzom prototipu aplikacija koje će se implementirati na drugim jezicima .

Međutim, tijekom posljednjih nekoliko godina Python se pokazao kao prvorazredni građanin u modernom razvoju softvera, upravljanju infrastrukturom i analizi podataka. To više nije back-room uslužni jezik, već glavna snaga u stvaranju web aplikacija i upravljanju sustavima i ključni pokretač eksplozije u analitici velikih podataka i strojnoj inteligenciji.

Povezani video: Kako Python olakšava programiranje

Savršen za IT, Python pojednostavljuje mnoge vrste poslova, od automatizacije sustava do rada u najmodernijim poljima poput strojnog učenja.

Ključne prednosti Pythona 

Pythonov se uspjeh vrti oko nekoliko prednosti koje pruža i početnicima i stručnjacima.

Python je jednostavan za naučiti i koristiti

Broj značajki u samom jeziku je skroman, što zahtijeva relativno malo ulaganja vremena ili truda za izradu vaših prvih programa. Sintaksa Python dizajnirana je tako da bude čitljiva i jednostavna. Ova jednostavnost Python čini idealnim jezikom za podučavanje i omogućuje pridošlicama da ga brzo pohvataju. Kao rezultat toga, programeri provode više vremena razmišljajući o problemu koji pokušavaju riješiti, a manje vremena razmišljajući o složenosti jezika ili dešifriranju koda koji su ostavili drugi.

Python je široko prihvaćen i podržan

Python je i popularan i široko korišten, što potvrđuju visoke ocjene u anketama poput indeksa Tiobe i velikog broja GitHub projekata koji koriste Python. Python radi na svim glavnim operativnim sustavima i platformama, kao i na većini manjih. Mnoge glavne knjižnice i API-jeve usluge imaju Python vezove ili omote, omogućujući Pythonu slobodno sučelje s tim uslugama ili izravno korištenje tih knjižnica. 

Python nije jezik "igračke"

Iako skriptiranje i automatizacija pokrivaju velik dio slučajeva upotrebe Pythona (o tome više kasnije), Python se također koristi za izradu softvera profesionalne kvalitete, i kao samostalne aplikacije i kao web usluge. Python možda nije najbrži jezik, ali ono što mu nedostaje u brzini, nadoknađuje svestranošću.

Python nastavlja napredovati

Svaka revizija jezika Python dodaje korisne nove značajke kako bi se išlo u korak sa modernom praksom razvoja softvera. Na primjer, asinkrone operacije i potprogrami sada su standardni dijelovi jezika, što olakšava pisanje Python aplikacija koje izvode istodobnu obradu.

Za što se koristi Python

Najosnovniji slučaj upotrebe Pythona je jezik skriptiranja i automatizacije. Python nije samo zamjena za skripte ljuske ili batch datoteke; koristi se i za automatizaciju interakcija s web preglednicima ili aplikacijskim GUI-ima ili za omogućavanje i konfiguriranje sustava u alatima kao što su Ansible i Salt. Ali skriptiranje i automatizacija predstavljaju samo vrh sante s Pythonom.

G izv programiranje aplikacija s Python

Pomoću Pythona možete stvoriti GUI aplikacije naredbenog retka i više platformi i rasporediti ih kao samostalne izvršne datoteke. Python nema izvornu sposobnost generiranja samostalne binarne datoteke iz skripte, ali za postizanje toga mogu se koristiti paketi treće strane poput cx_Freeze i PyInstaller.

Znanost podataka i strojno učenje s Pythonom

Sofisticirana analiza podataka postala je jedno od IT područja s najbržim pokretom i jedan od Pythonovih najvažnijih slučajeva korištenja. Velika većina knjižnica korištenih za znanost o podacima ili za strojno učenje ima Python sučelja, što jezik čini najpopularnijim naredbenim sučeljem na visokoj razini za knjižnice strojnog učenja i druge numeričke algoritme.

Web usluge i RESTful API-ji u Pythonu

Pythonove matične knjižnice i web-okviri treće strane pružaju brze i prikladne načine za stvaranje svega, od jednostavnih REST API-ja u nekoliko redaka koda, do potpuno obraslih web stranica s podacima. Najnovije verzije Pythona imaju snažnu podršku za asinkrone operacije, omogućujući web lokacijama da obrađuju desetke tisuća zahtjeva u sekundi s pravim knjižnicama.

Metaprogramiranje i generiranje koda u Pythonu

U Pythonu je sve u jeziku objekt, uključujući Python module i same knjižnice. To omogućuje Pythonu da radi kao vrlo učinkovit generator koda, što omogućuje pisanje aplikacija koje manipuliraju vlastitim funkcijama i imaju onu vrstu proširivosti koju bi bilo teško ili nemoguće izvesti na drugim jezicima.

Python se također može koristiti za pogon sustava za generiranje koda, poput LLVM-a, za učinkovito stvaranje koda na drugim jezicima.

"Kôd ljepila" u Pythonu

Python se često opisuje kao "jezik ljepila", što znači da može dopustiti da međusobno funkcioniraju različiti kodovi (obično knjižnice sa sučeljima jezika C). Njegova upotreba u znanosti o podacima i strojnom učenju je u ovom smislu, ali to je samo jedna inkarnacija opće ideje. Ako imate aplikacije ili programske domene koje biste željeli spojiti, ali ne možete izravno međusobno razgovarati, možete ih koristiti Pythonom da biste ih povezali.

Gdje Python nedostaje

Vrijedne su pažnje i vrste zadataka za koje Python nije dobro prikladan.

Python je jezik visoke razine, tako da nije prikladan za programiranje na razini sustava - upravljački programi uređaja ili jezgre OS-a izvan su slike.

Također nije idealan za situacije koje zahtijevaju samostalne binarne datoteke s više platformi . Mogli biste izraditi samostalnu aplikaciju Python za Windows, MacOS i Linux, ali ne elegantno ili jednostavno.

Napokon, Python nije najbolji izbor kada je brzina apsolutni prioritet u svakom aspektu aplikacije. Za to vam je bolje sa C / C ++ ili drugim jezikom tog kalibra.

Kako Python pojednostavljuje programiranje

Pythonova sintaksa trebala bi biti čitljiva i čista, s malo pretvaranja. Standardni „zdravi svijet“ u Pythonu 3.x nije ništa drugo nego:

ispis ("Pozdrav svijetu!")

Python pruža mnoge sintaktičke elemente koji jezgrovito izražavaju mnoge uobičajene programske tokove. Razmotrite primjer programa za čitanje redaka iz tekstualne datoteke u objekt popisa, usput uklanjajući svaki redak njegovog završnog znaka novog retka:

s open ('myfile.txt') kao my_file:

    file_lines = [x.rstrip ('\ n') za x u mojoj_datoteci]

with/asGradnja je kontekst menadžer , koji pruža učinkovit način za instancu objekta za blok koda, a zatim raspolaganja van da blok. U ovom se slučaju objekt my_fileinstancira s open() funkcijom. Ovo mjesto zauzima mjesto nekoliko redaka za otvaranje datoteke, čitanje pojedinih redaka iz nje, a zatim zatvaranje.

[x … for x in my_file]Konstrukcija je još Python idiosinkrazija je popis s razumijevanjem . Omogućuje my_fileponavljanje stavke koja sadrži ostale stavke (ovdje i retke koje sadrži) i omogućuje xobradu svakog elementa koji se ponavlja (odnosno svaki ) i automatsko dodavanje na popis.

Na Pythonu biste mogli napisati takvu stvar kao formalnu for… petlju, kao što biste to učinili i na drugom jeziku. Poanta je u tome što Python ima način da ekonomski izrazi stvari poput petlji koje se ponavljaju kroz više objekata i izvrše jednostavnu operaciju nad svakim elementom u petlji, ili da radi sa stvarima koje zahtijevaju eksplicitnu instanciju i odlaganje.

Ovakve konstrukcije omogućuju programerima Pythona da uravnoteže kratkoću i čitljivost.

Pythonove ostale jezične značajke namijenjene su nadopunjivanju uobičajenih slučajeva upotrebe. Većina modernih vrsta objekata - na primjer, Unicode nizovi - ugrađuju se izravno u jezik. Strukture podataka - poput popisa, rječnika (tj. Hash-mapa ili pohrana ključeva i vrijednosti), korijeni (za pohranu nepromjenjivih zbirki objekata) i skupovi (za pohranu zbirki jedinstvenih objekata) - dostupni su kao stavke standardne izdave.

Python 2 nasuprot Python 3

Python je dostupan u dvije verzije, koje su dovoljno različite da spotaknu mnogo novih korisnika. Python 2.x, starija „naslijeđena“ grana, i dalje će biti podržavan (to jest primati službena ažuriranja) do 2020. godine, a možda će i neslužbeno potrajati i nakon toga. Python 3.x, trenutna i buduća inkarnacija jezika, ima mnoge korisne i važne značajke koje se ne mogu naći u Pythonu 2.x, poput novih značajki sintakse (npr. „Operater morža“), boljih kontrola paralelnosti i još mnogo toga učinkovit tumač.

Usvajanje Pythona 3 najduže je usporeno relativnim nedostatkom podrške biblioteka treće strane. Mnoge Python knjižnice podržavale su samo Python 2, što je otežavalo prebacivanje. No, tijekom posljednjih nekoliko godina broj knjižnica koje podržavaju samo Python 2 smanjio se; sve najpopularnije knjižnice sada su kompatibilne s Pythonom 2 i Pythonom 3. Danas je Python 3 najbolji izbor za nove projekte; nema razloga odabrati Python 2, osim ako nemate izbora. Ako ste zapeli s Pythonom 2, na raspolaganju su vam razne strategije.

Pythonove knjižnice

Uspjeh Pythona počiva na bogatom ekosustavu softvera prve i treće strane. Python koristi i snažnu standardnu ​​knjižnicu i izdašan asortiman lako dostupnih i lako korištenih knjižnica nezavisnih programera. Python je obogaćen desetljećima širenja i doprinosa.

Pythonova standardna knjižnica nudi module za uobičajene programske zadatke - matematiku, rukovanje nizovima, pristup datotekama i direktorijima, umrežavanje, asinkrone operacije, uvođenje navoja, višeprocesno upravljanje itd. Ali također uključuje module koji upravljaju uobičajenim programskim zadacima na visokoj razini potrebni modernim aplikacijama: čitanje i pisanje strukturiranih formata datoteka poput JSON-a i XML-a, manipuliranje komprimiranim datotekama, rad s internetskim protokolima i formatima podataka (web-stranice, URL-ovi, e-pošta). Većini bilo kojeg vanjskog koda koji izlaže sučelje stranih funkcija kompatibilno s C može se pristupiti s Pythonovim ctypesmodulom.

Zadana distribucija Pythona također pruža osnovnu, ali korisnu, višeplatformsku GUI biblioteku putem Tkintera i ugrađenu kopiju baze podataka SQLite 3.

Tisuće biblioteka trećih strana, dostupnih putem indeksa paketa Python (PyPI), predstavljaju najjaču izložbu Pythonove popularnosti i svestranosti.

Na primjer:

  • Biblioteka BeautifulSoup pruža cjelovit alatni okvir za struganje HTML-a - čak i nezgodnog, slomljenog HTML-a - i izdvajanje podataka iz njega.
  • Zahtjevi čine rad s HTTP zahtjevima razmjerom bezbolnim i jednostavnim.
  • Okviri poput Flask i Django omogućuju brzi razvoj web usluga koje obuhvaćaju i jednostavne i napredne slučajeve korištenja.
  • Višestrukim uslugama u oblaku može se upravljati putem Pythonovog objektnog modela pomoću Apache Libcloud.
  • NumPy, Pandas i Matplotlib ubrzavaju matematičke i statističke operacije i olakšavaju stvaranje vizualizacija podataka.

Pythonovi kompromisi

Kao i C #, Java i Go, Python ima upravljanje memorijom prikupljeno smeće, što znači da programer ne mora implementirati kod za praćenje i oslobađanje objekata. Obično se sakupljanje smeća događa automatski u pozadini, ali ako to predstavlja problem s performansama, možete ga pokrenuti ručno ili ga u potpunosti onemogućiti ili cijele regije objekata izuzetih od prikupljanja smeća proglasiti poboljšanjem performansi.

Važan aspekt Pythona je njegova dinamičnost . Sve u jeziku, uključujući funkcije i same module, obrađuju se kao objekti. To dolazi na štetu brzine (o tome više kasnije), ali znatno olakšava pisanje koda visoke razine. Programeri mogu izvoditi složene manipulacije objektima sa samo nekoliko uputa, pa čak i tretirati dijelove aplikacije kao apstrakcije koje se po potrebi mogu mijenjati.

Pythonova upotreba značajnog razmaka navedena je kao jedan od najboljih i najgorih Pythonovih atributa. Uvlačenje u drugi redak u nastavku nije samo zbog čitljivosti; dio je Pythonove sintakse. Python tumači odbit će programe koji ne koriste odgovarajuće uvlake za označavanje toka kontrole.

s open ('myfile.txt') kao my_file:

    file_lines = [x.rstrip ('\ n') za x u mojoj_datoteci]

Sintaktički razmak može dovesti do nabora nosa, a neki ljudi odbacuju Python iz tog razloga. No, stroga pravila uvlačenja u praksi su daleko manje nametljiva nego što bi se mogla činiti u teoriji, čak i s najmanjim uređivačima koda, a rezultat je kod koji je čišći i čitljiviji.

Još jedan potencijalni zaokret, posebno za one koji dolaze iz jezika poput C ili Jave, jest kako Python rukuje tipkanjem varijabli. Prema zadanim postavkama Python koristi dinamičko ili "patkino" tipkanje - izvrsno za brzo kodiranje, ali potencijalno problematično u velikim bazama koda. Međutim, Python je nedavno dodao podršku za neobavezno nagovještavanje vremena kompajliranja, tako da ga mogu koristiti projekti koji bi mogli imati koristi od statičkog tipkanja.

Je li Python spor? Nije nužno

Jedno uobičajeno upozorenje o Pythonu je da je spor. Objektivno, istina je. Python programi uglavnom se izvode mnogo sporije od odgovarajućih programa na C / C ++ ili Java. Neki programi Pythona bit će sporiji za red veličine ili više.