Este pe moarte limbajul de programare Python? Critica limbajului Python. Ce este învățarea automată

Python este un limbaj de uz general, la nivel înalt, care poate fi extins și încorporat. De exemplu, este inclus în pachetul aplicației ca instrument pentru scrierea macrocomenzilor. Acest lucru face din Python o alegere rezonabilă pentru multe sarcini de programare, mari și mici, și nu atât de bună pentru un număr mic de sarcini de calcul.

Unde este cel mai bun loc pentru a-l folosi?

Limbajul Python este ideal pentru proiecte care necesită o dezvoltare rapidă. Suportă mai multe paradigme de programare, ceea ce este bun pentru programele care necesită flexibilitate. Iar prezența multor pachete și module oferă versatilitate și economisește timp.

Guido van Rossum este creatorul lui Python, numit cu afecțiune „dictatorul benign pe viață” de către comunitate. La sfârșitul anilor 1980, lui Guido îi plăceau caracteristicile unor limbaje de programare, dar niciunul dintre ele nu avea toate caracteristicile pe care și le dorea. În special, limba trebuie să aibă următoarele caracteristici.

Limbajul de scriptare

Un script este un program care controlează alte programe. Limbajele de scripting sunt potrivite pentru dezvoltare și prototipare rapidă, deoarece sunt bune la transmiterea datelor de la o componentă la alta și la eliberarea programatorului de lucruri fără probleme precum gestionarea memoriei.

Comunitatea de utilizatori preferă să numească Python un limbaj de programare dinamic.

Indentare pentru gruparea declarațiilor

Python determină dacă expresiile aparțin aceluiași grup folosind indentarea. Acest grup se numește bloc de cod. Alte limbi folosesc sintaxă sau punctuație diferită pentru aceasta. De exemplu, în C simbolul ( denotă începutul și ) este sfârșitul unei secvențe de comenzi. Indentarea este considerată o bună practică în alte limbi, dar unul dintre primii care a impus indentarea a fost Python. Ce dă asta? Indentarea face codul mai ușor de citit, iar blocurile de cod necesită mai puține semne de început și de sfârșit și semne de punctuație care pot fi ratate accidental. Toate acestea duc la mai puține erori.

Tipuri de date la nivel înalt

Calculatoarele stochează datele în unu și zero, dar oamenii au nevoie de forme mai complexe, cum ar fi textul. Se spune că un limbaj care acceptă date complexe acceptă tipuri de date de nivel înalt. Aceste tipuri de date sunt ușor de manipulat. De exemplu, în Python, șirurile pot fi împărțite, concatenate, convertite în litere mari sau mici, căutate etc. Tipurile de date de nivel înalt, cum ar fi listele și dicționarele, care pot stoca alte date, au mult mai multe funcționalități decât alte limbi.

Extensibilitate

Limbajul de programare extensibil poate fi extins. Astfel de limbi sunt foarte puternice, deoarece extensiile le fac potrivite pentru o varietate de aplicații și sisteme de operare. Extensiile pot adăuga concepte, module sau plugin-uri. Limbajul Python este extensibil în mai multe moduri. Un grup central de programatori lucrează pentru a-l schimba și îmbunătăți, iar sute de alții scriu module pentru scopuri specifice.

Interpretare

Limbile interpretate sunt executate direct din codul sursă scris de oameni, în timp ce programele scrise în limbaje compilate precum C++ trebuie traduse în limbi mai lente, deoarece traducerea are loc din mers, dar scrierea programelor și depanarea lor este mai rapidă, deoarece există nu este nevoie să așteptați până la finalizarea compilatorului. Sunt mai ușor de portat pe diferite platforme.

Este discutabil dacă Python este un limbaj interpretat sau compilat. Deși rulează interpretat în multe privințe, codul său este compilat înainte de execuție (cum ar fi Java) și multe dintre componentele sale rulează la viteza maximă a mașinii deoarece sunt scrise în C.

Guido a început să scrie Python în timpul sărbătorilor de Crăciun în 1989, iar în anul următor a perfecționat limbajul pe baza feedback-ului colegilor săi. Publicul larg a văzut rezultatul în februarie 1991, când a fost postat pe un grup de știri Usenet.

Pentru a începe să scrieți programe în Python, trebuie să îl instalați. Python 2.7 și Python 3.5 au diferențe semnificative care fac programele scrise în ele incompatibile.

Calculatoarele Macintosh au această limbă preinstalată, iar versiunea sa depinde de vârsta sistemului de operare. Dacă utilizați Windows, va trebui să instalați singur Python. Fișierele pachetului de instalare pot fi selectate pe site-ul web python.org.

Două moduri de a interacționa

Unul dintre motivele pentru care programarea în Python este atât de ușoară este că vine cu instrumente care vă ajută să proiectați, să scrieți și să depanați programe.

În modul interactiv, comenzile sunt introduse pe rând, aproape în același mod în care sistemul de operare (shell) acceptă comenzi din linia de comandă. De asemenea, puteți crea programe scurte cu mai multe linii sau puteți importa cod din fișiere text sau module Python încorporate. Pentru începători, va fi util să știe că modul interactiv include un sistem de ajutor extins. Acesta este un mod convenabil de a explora capacitățile unui limbaj de programare.

Mediul de dezvoltare IDLE include un mod interactiv și instrumente pentru scrierea și rularea programelor, precum și un sistem de urmărire a numelor. Mediul este scris în Python și demonstrează capabilitățile extinse ale limbajului.

Modul interactiv

Aici puteți face aproape tot ce se poate face într-un program, chiar și să scrieți cod pe mai multe linii. Acest mod poate servi:

  • cutie cu nisip pentru experimente sigure;
  • un mediu care vă permite să învățați programarea Python;
  • instrument pentru găsirea și remedierea erorilor.

Modul interactiv poate fi folosit ca calculator, poate manipula text și poate atribui valori variabilelor. De asemenea, puteți importa module, funcții sau părți de programe pentru a le testa. Vă ajută să experimentați cu obiecte Python fără să scrieți programe lungi și să depanați programe, importând părți din ele pe rând.

Lucrează interactiv

După rularea Python, fereastra terminalului va afișa informații despre versiunea curentă a programului, data lansării acestuia, mai multe solicitări despre ce să faceți în continuare și un prompt >>>.

Pentru a lucra interactiv, tastați o comandă sau o expresie și apăsați Enter.

Python interpretează intrarea și va răspunde dacă ceea ce ați tastat necesită un răspuns sau dacă interpretul nu îl înțelege.

Următoarea comandă va imprima șirul. Deoarece locația de imprimare nu este specificată, rezultatul apare pe ecran.

  • >>> printează „Bună, lume!”
  • Salut Lume!

Această singură linie este întregul program! În modul interactiv, Python procesează fiecare linie de cod introdusă după ce tasta Enter este apăsată, iar rezultatul apare mai jos.

Vizualizarea informațiilor despre un obiect

În modul interactiv, există două moduri de a vizualiza informații despre un obiect:

  • introduceți obiectul (sau numele acestuia) și apăsați tasta Enter;
  • introduceți comanda de imprimare și obiectul (sau numele acestuia) și apăsați Enter.

Rezultatul depinde de obiect.

Când utilizați unele tipuri de date (numere întregi și liste, de exemplu), aceste două metode dau același rezultat:

  • >>> x =
  • >>> x
  • >>> imprima x

Pentru șiruri, rezultatul tastării „nume tipărit” este ușor diferit de rezultatul tastării numelui. În primul caz valoarea este cuprinsă între ghilimele, dar în al doilea nu este:

  • >>> x = "MyString"
  • >>> x
  • „Corul meu”
  • >>> imprima x
  • MyString

Când numele se referă la un bloc de cod (cum ar fi o funcție, un modul sau o instanță de clasă), introducerea numelui va oferi informații despre tipul de date, numele și locația de stocare.

Următorul exemplu creează o clasă numită Message și afișează informații despre

  • >>> Mesaj de clasă:
  • ... trece
  • >>> Mesaj
  • >>>printează mesajul
  • __principal__. Mesaj

Siruri de caractere

În Python, șirurile sunt secvențe de caractere. Un literal șir este creat prin includerea caracterelor între ghilimele simple ("), duble (") sau triple (""" sau ""). Următorul exemplu atribuie o valoare variabilei x:

  • >>> x = "MyString"

Șirul Python are mai multe capacități încorporate. Una dintre ele este capacitatea de a returna o copie a ta, cu toate aceste capacități sunt cunoscute ca metode. Pentru a apela o metodă pe un obiect, trebuie să utilizați sintaxa punctului. Adică, după introducerea numelui variabilei, care în acest caz este o referință la obiectul șir, trebuie să puneți un operator punct (.), apoi numele metodei, urmat de o paranteză de deschidere și de închidere:

  • >>> x.lower()
  • "mystring"

Puteți obține o parte dintr-un șir folosind operatorul de indexare s[i]. Indexarea începe de la zero, deci s returnează primul caracter din șir, s returnează al doilea și așa mai departe:

  • >>> x
  • >>> x

Metodele cu șiruri funcționează atât cu șiruri obișnuite, cât și cu Unicode. Ei efectuează următoarele acțiuni:

  • schimbarea majusculei (majuscule, majuscule, mici, majuscule, titlu);
  • număra (număra);
  • modificarea codării (codificare, decodare);
  • caută și înlocuiește (găsește, înlocuiește, rgăsește, indexează, indexează, traduce);
  • verificați îndeplinirea condițiilor (startswith, endswith, isalnum, isalpha, isdigit, islower, isspace, istitle, isupper);
  • combinare și împărțire (unire, partiție, rpartition, split, splitlines);
  • format (centru, ljust, lstrip, rstring, rjust, strip, zfill, expandtabs).

Python: liste

În timp ce șirurile Python sunt limitate de caractere, listele nu sunt limitate în niciun fel. Ele reprezintă secvențe ordonate de obiecte arbitrare, inclusiv alte liste. În plus, puteți adăuga, elimina și înlocui elementele acestora. O serie de obiecte separate prin virgule în interior reprezintă ceea ce reprezintă, prezentate mai jos - iată exemple de date și operațiuni cu acestea:

  • >>> baze = ["A", "C", "G", "T"]
  • >>>baze
  • ["A", "C", "G", "T"]
  • >>> baze.append("U")
  • >>>baze
  • ["A", "C", "G", "T", "U"]
  • >>> baze.reverse()
  • >>>baze
  • ["U", "T", "G", "C", "A"]
  • >>>baze
  • >>>baze
  • >>> baze.remove("U")
  • >>>baze
  • ["T", "G", "C", "A"]
  • >>> baze.sort()
  • >>>baze
  • ["A", "C", "G", "T"]

În acest exemplu, a fost creată o listă de personaje individuale. Apoi a fost adăugat un element la sfârșit, ordinea elementelor a fost inversată, elementele au fost preluate după poziția lor de index, elementul cu valoarea „U” a fost eliminat, iar elementele au fost sortate. Eliminarea unui element dintr-o listă ilustrează o situație în care metoda remove() trebuie să ofere informații suplimentare, și anume valoarea care trebuie eliminată.

Pe lângă metode precum remove(), Python are o altă caracteristică similară numită funcție. Singura diferență dintre o funcție și o metodă este că prima nu este asociată cu un anumit obiect.

Python: funcții

Funcțiile efectuează acțiuni pe una sau mai multe valori și returnează un rezultat. Un număr mare dintre ele sunt încorporate în Python. Exemple de funcții încorporate:

  • len() - returnează numărul de elemente din secvență;
  • dir() - returnează o listă de șiruri reprezentând atributele obiectului;
  • list() - returnează o nouă listă inițializată dintr-o altă secvență.
  • >>> ajutor (rotund)
  • Ajutor pentru runda funcției încorporate:
  • rundă(...)
  • rotund(număr[, ncifre]) -> număr în virgulă mobilă

De asemenea, este posibil să vă definiți propriile funcții.

Funcții definite de utilizator

Procesul de creare a propriei funcții Python este următorul. Prima linie începe cu cuvântul cheie def, urmat de numele funcției și argumentele (valori de intrare așteptate) cuprinse între paranteze și se termină cu două puncte. Comenzile ulterioare formează corpul funcției și trebuie să fie indentate. Dacă un comentariu apare la începutul corpului unei funcții, acesta devine parte a documentației acesteia. Ultima linie a funcției returnează rezultatul:

  • >>> def transcrie(dna):
  • ... """Returnți șirul de ADN ca șir de rna."""
  • ... return dna.replace("T", "U")
  • >>> transcrie ("CCGGAAGAGCTTACTTAG")
  • "CCGGAAGAGCUUACUUAG"

În acest exemplu, a fost creată o funcție numită transcrie care așteaptă un șir reprezentând o secvență ADN. Metoda replace() returnează o copie a șirului original cu toate aparițiile unui caracter înlocuite cu altul. Trei linii de cod au permis ADN-ului să fie transcris în ARN. arata asa:

  • >>> def revers(e):
  • ... """Return șirul secvenței în ordine inversă."""
  • ... litere = liste(e)
  • ... litere.reverse()
  • ... returnează „”. join(litere)
  • >>> invers ("CCGGAAGAGCTTACTTAG")
  • „GATTCATTCGAGAAGGCC”

Funcția inversă preia un șir, creează o listă pe baza acestuia și îi inversează ordinea. Acum trebuie să facem transformarea inversă. Obiectul are o metodă join() care se alătură unei liste prin separarea fiecărui element cu o valoare șir. Deoarece nu este necesar un delimitator, metoda este utilizată pe un șir gol reprezentat prin două ghilimele ("" sau "").

Dicționare

Ce este un dicționar Python? Are aceleași avantaje ca un dicționar de hârtie obișnuit. Vă permite să găsiți rapid valoarea dorită (definiția) asociată cu o cheie (cuvânt). Dicționarele sunt cuprinse între acolade și conțin o secvență de perechi cheie-valoare, separate prin virgulă. Dicționarele nu sunt ordonate. În schimb, valorile dicționarului sunt accesate prin cheia lor, mai degrabă decât prin poziția lor.

  • >>> complement de bază = ("A": "T", "C": "G", "T": "A", "G": "C")
  • >>> basecomplement.keys()
  • ["A", "C", "T", "G"]
  • >>> basecomplement.values()
  • ["T", "G", "A", "C"]
  • >>> complement de bază["A"]

Clase

Pentru a vă crea propriile obiecte, trebuie să definiți un tip de șablon numit clasă. În Python, acest lucru se face folosind instrucțiunea de clasă, urmată de nume și două puncte. Corpul definiției unei clase conține proprietăți și metode care vor fi disponibile pentru toate instanțele de obiecte bazate pe acea clasă.

Avantaje

Majoritatea limbajelor de programare oferă caracteristici de confort, dar niciunul nu are combinația de confort și putere pe care o oferă Python. Care sunt aceste beneficii? Aici sunt câțiva dintre ei:

  • Limbajul poate fi încorporat în alte aplicații și folosit pentru a crea macrocomenzi. De exemplu, în Paint Shop Pro 8 și versiuni ulterioare, este un limbaj de scripting.
  • Python este liber de utilizat și distribuit, comercial sau nu.
  • Limba are capabilități puternice de procesare a textului și de căutare, care este folosită în aplicațiile care funcționează cu cantități mari de informații text.
  • Puteți construi aplicații mari pe el fără a fi nevoie să verificați programele pe care le executați.
  • Python acceptă testarea și depanarea modulelor individuale și a programelor întregi.

Uneori sunt vizitat de diverse idei de auto-dezvoltare. Acestea sunt gânduri complet diferite despre ceea ce ar trebui să stăpânesc, ce ar trebui să învăț, ce ar trebui să înțeleg. Și într-unul dintre aceste momente, m-am gândit să învăț programarea. Am început cu limbajul Pascal, care era popular la acea vreme, iar acum, după ce am studiat deja aproximativ 3 limbi, am început să mă gândesc, merită să învăț Python?

Din acest articol veți învăța:

Eu, Gridin Semyon, urez bun venit tuturor cititorilor blogului meu kip-world. Te gândești de mult să începi să înveți programarea? Poate te gândești cum să alegi un limbaj de programare pentru început?

Sau poate ți-e frică să începi? Sau ești doar o persoană care a dat din greșeală în articolul meu? În orice caz, aici vei găsi răspunsuri la unele dintre întrebările tale!

În oricare dintre cazurile de mai sus, vreau să vă pun cea mai importantă întrebare: Ce probleme veți rezolva utilizând cutare sau cutare limbaj?

Am compilat un mic „micro-articol” la care să vă gândiți.

Merită să înveți Python?

Cred că nu este un secret pentru nimeni că, literalmente, în urmă cu 5-6 ani, primul limbaj care a studiat programarea în orice școală a fost Pascal. Pascal este un limbaj minunat al erei sale, dar, din păcate sau din fericire, și-a depășit utilitatea și acum, ca prim limbaj de programare, este o alegere inteligentă pentru fiecare programator începător!

S-ar putea să vă întrebați acum: „De ce merită să înveți Python ca primul tău limbaj de programare?” Nu există niciun mister în asta, la fel cum nu există nici o ghicitoare.

Beneficiile limbajului de programare Python

in primul rand, este important de știut că acest limbaj de programare este acum solicitat în multe întreprinderi, în special în Moscova și Sankt Petersburg. Deci, dacă aveți norocul să locuiți în aceste orașe, atunci cu această limbă puteți căuta un loc de muncă foarte interesant și bine plătit.

În al doilea rând, acesta este un limbaj de programare în curs de dezvoltare, în el apar diverse modificări la fiecare doi până la trei ani și acesta este un indicator foarte bun pentru un limbaj de programare.

În al patrulea rând, multe suportă limbajul de programare de scripting. Puteți comunica cu lumea exterioară prin intrări și ieșiri externe.

Programatorii pur și simplu adoră acest limbaj pentru concizia și simplitatea codului. Acolo unde în JavaScript sau C++ ar trebui să scrieți două sau trei pagini, în Python o puteți face doar într-una!

O altă caracteristică foarte importantă a limbajului Python este că este folosit pentru dezvoltarea Web. Mai mult, nu este folosit ca un limbaj obișnuit, ci îndeplinește una dintre funcțiile interesante. Python pentru dezvoltare web este folosit în cazurile în care alte limbi eșuează! Acesta este un fapt foarte interesant și curios. În acest domeniu, limba are propria sa nișă personală!

Să rezumam pe scurt:

  • Python este un limbaj de programare complet și bogat în funcții
  • Acest limbaj este folosit într-o varietate de domenii, inclusiv programarea web
  • Acesta este un limbaj ideal pentru a vă începe dezvoltarea ca programator, deoarece este clar și ușor de utilizat.
  • Este limbajul preferat al multor programatori profesioniști

Și dacă cineva mai are întrebări: „Merită să înveți Python?”, „Este această limbă potrivită pentru începători?”, „Voi putea obține un loc de muncă bun învățând această limbă?” Răspunsul meu: „Cu siguranță da! Învață acest limbaj, indiferent dacă ești programator începător sau experimentat. Cu siguranță îți va fi de folos și te va ajuta în activitățile tale!”

În această notă, trebuie să-ți iau rămas bun de la tine. Abonează-te la blogul meu, spune-le prietenilor tăi despre asta - vor fi multe informații interesante și importante aici!

P.S. Cu ce ​​limbă crezi că este mai bine să începi? Poate ti-a dat cineva un alt sfat? M-as bucura foarte mult sa am o parere din afara in comentarii!

Există multe utilizări pentru Python, dar există câteva la care este deosebit de bun. Să ne dăm seama ce se poate face în această limbă.

Principalele diferente:

  • Flask oferă simplitate, flexibilitate și control complet asupra proiectului dumneavoastră. Acesta permite utilizatorului să decidă în mod independent cum să implementeze anumite lucruri.
  • Django este un serviciu all-inclusive. Din cutie are deja un panou de administrare, interfețe pentru baze de date, ORM (Object Relational Mapping) și o structură de directoare pentru proiectele dvs.

Ce sa aleg?

  • Alegeți Flask dacă doriți mai multă experiență și oportunități de învățare. Sau dacă aveți nevoie de control maxim asupra tuturor componentelor utilizate, de exemplu bazele de date.
  • Alegeți Django dacă sunteți interesat de produsul final. Mai ales dacă lucrezi cu aplicații simple, precum un site de știri, un magazin, un blog și vrei ca fiecare sarcină să fie rezolvată într-un mod extrem de clar.

Cu alte cuvinte, Flask este poate cea mai bună alegere pentru un dezvoltator începător, deoarece conține mai puține componente. În plus, merită să alegi dacă trebuie să-ți ajustezi proiectul.

Flask, datorită flexibilității sale, este mai potrivit pentru crearea de API-uri REST.

Pe de altă parte, dacă scopul tău este să faci ceva rapid și ușor, probabil că ar trebui să alegi Django.

Știința datelor: învățare automată, analiză și vizualizare a datelor

În primul rând, trebuie să vă dați seama ce este.

Să presupunem că doriți să dezvoltați un program care va detecta automat ceea ce este afișat într-o imagine.

De exemplu, prezentând-o cu această imagine, doriți ca programul să identifice câinele.

Și aici ar trebui să vadă o masă.

S-ar putea să vă gândiți că puteți scrie pur și simplu cod de analiză a imaginii pentru a rezolva această problemă. De exemplu, dacă în imagine sunt mulți pixeli maro deschis, ajungem la concluzia că este un câine.

Sau puteți învăța să identificați marginile și limitele unei imagini. Atunci o poză cu multe margini drepte va fi probabil o masă.

Cu toate acestea, aceasta este o abordare destul de complexă și prost concepută. Ce ar trebui să faci dacă fotografia arată un câine alb fără pete maro? Sau dacă imaginea arată o masă rotundă?

Aici intervine învățarea automată. De obicei, implementează unele , care permite detectarea automată a unui model familiar printre datele de intrare.

Puteți alimenta algoritmul de învățare automată, să zicem, 1000 de imagini cu un câine și 1000 de imagini cu tabele. Va învăța diferența dintre aceste obiecte. Apoi, când îi vei oferi o nouă imagine a unei mese sau a unui câine, el va putea identifica despre ce este vorba.

  • scikit-learn are câțiva algoritmi de învățare populari încorporați din cutie;
  • TensorFlow este o bibliotecă de nivel inferior. Vă permite să creați algoritmi personalizați.

Pentru cei nou în învățarea automată, scikit-learn este un loc bun de început. Dezvoltatorii mai experimentați care se confruntă cu probleme de eficiență ar putea dori să arunce o privire mai atentă la TensorFlow.

Cum să studiezi învățarea automată?

Analiștii adevărați, precum cei de la Google sau Microsoft, fac același lucru, doar că munca lor este mai complexă și mai complexă.

Ei folosesc limbajul de interogare SQL pentru a prelua date din bazele de date. Instrumente speciale precum Mathplotlib (pentru Python) sau D3.js (pentru JavaScript) sunt apoi folosite pentru analiză și vizualizare.

Modalități de utilizare a Python pentru analiza și vizualizarea datelor

Una dintre cele mai populare biblioteci pentru vizualizare este Mathplotlib.

Începătorii ar trebui să înceapă să învețe cu el din două motive:

  • prag de intrare scăzut;
  • stăpânirea Mathplotlib vă va permite să înțelegeți rapid biblioteci mai complexe bazate pe acesta în viitor, de exemplu, seaborn.

Cum să înveți analiza datelor în Python?

Recent, unele companii au început să folosească JavaScript pentru a crea aplicații desktop. De exemplu, aplicația desktop Slack a fost creată folosind cadrul JavaScript Electron.

Avantajul scrierii aplicațiilor desktop în JavaScript este că puteți reutiliza codul din versiunea web.

Python 3 sau Python 2

Python 3 este o alegere mai modernă și mai populară.

Explicația codului backend și frontend

Să presupunem că vrei să faci ceva care să amintească de Instagram.

Există engleză. Oamenii comunică pe el. Și, de asemenea, în germană, filipineză, spaniolă, greacă și o mulțime de altele.

Și există Python (vocea unui plictisitor despre numele corect). Aceasta este limba în care o persoană comunică cu un computer. Puteți comunica cu un computer într-o mulțime de limbi: C, Pascal, Haskell, Go, Swift, Ruby, PHP, BASIC, Erlang, Er și multe altele.

Vom învăța Python aici. Să începem cu o scurtă prezentare generală a modului în care diferă de alte limbi. Nu trebuie să faci nimic: citești, amintește-ți câteva puncte și gata, te poți lăuda cu tot ce ești în subiect (nu face asta).

Concizie

Python are o astfel de comunitate încât nu acceptă confuzia în utilizarea limbii. Un standard de codare face parte din limbaj. Filosofia scrierii codului face, de asemenea, parte din limbaj. Prin urmare, doi programatori buni vor scrie cod foarte asemănător: nu este nevoie să pierdeți timpul cu „la naiba, ce a vrut să spună aici?...”.

Python are o astfel de sintaxă încât ajută la scrierea codului foarte scurt. Nu există paranteze suplimentare, cuvinte cheie lungi, trucuri complicate sau ceva de genul acesta. Descrieți logica, traduceți-o în engleză, adăugați indentări și sintaxă - asta este, programul este gata.

Python are o bibliotecă atât de standard încât ajută la efectuarea unei mulțimi de operațiuni de rutină. Vă va ajuta să trimiteți un e-mail, să codificați un șir, să configurați un server web, să aflați ora, să ștergeți un fișier, să calculați variația, să arhivați un fișier, să extrageți date dintr-o bază de date și să faceți mai multe în doar câteva rânduri.

Python are atât de multe module terțe, încât puteți economisi mii de ore de muncă. Trebuie să scrieți un site web? Învățați o rețea neuronală să rezolve captcha? Descărcați audio de pe VKontakte? Recunoașteți oamenii în fotografii? Simulați zborul unei rachete? Scrieți un bot? Există module gata făcute pentru toate acestea; trebuie doar să le instalați și să le utilizați.

Toate acestea fac ca procesul de scriere a codului să fie foarte rapid.

Mișto documentație

Încercați să căutați pe google sau, de exemplu. Primele rezultate vor conține un link către https://docs.python.org - site-ul oficial de documentare.

Acest lucru se datorează faptului că documentația este foarte detaliată: are materiale pentru începători, documentație pentru fiecare modul, recomandări de utilizare, capcane și lecturi suplimentare. Și asta este totul pentru fiecare versiune a limbii. Nimeni nu are o documentație atât de convenabilă și detaliată.

Există și http://stackoverflow.com/ - un site unde unii programatori răspund altor programatori la întrebări despre programare. În timpul existenței sale, acolo au fost puse toate întrebările posibile. Serios: orice întrebare de tipul „cum se face asta în Python” sau „de ce nu funcționează acest cod” a fost deja adresată, vizualizată și răspuns.

Toate acestea fac procesul de învățare și scriere a codului rapid: toate informațiile necesare sunt doar la o interogare de căutare reușită distanță.

Care dintre aceste întrebări nu este inclusă în întrebările frecvente oficiale ale documentației oficiale?

  • De ce obțin rezultate ciudate cu operații aritmetice simple?
  • De ce este instalat Python pe mașina mea?
  • Cum pot implementa clasa de bază abstractă din fabrică în Python?
  • A scrie C este greu; exista alternative?

Tastare dinamică puternică

Tastare dinamică– aceasta înseamnă că valorile de diferite tipuri pot fi stocate în aceeași variabilă în momente diferite. Acum este un număr, apoi este un șir și totul este într-o singură variabilă.

În multe limbi, acest lucru nu este posibil: ați creat o variabilă întreagă, așa că stocați numere întregi în ea. Acest lucru este convenabil pentru computer, dar nu întotdeauna convenabil pentru programator.

Tastare puternică- aceasta înseamnă că nu puteți efectua doar acțiuni cu obiecte de diferite tipuri. De exemplu, nu puteți adăuga un șir cu un număr: mai întâi trebuie să transformați șirul într-un număr și abia apoi să îl adăugați. Python în sine nu va face o astfel de conversie.

Acest lucru poate părea incomod, dar de fapt protejează împotriva erorilor. Pentru a înțelege despre ce vorbim, uitați-vă doar la JavaScript, un limbaj scris slab:

Gestionarea automată a memoriei

Gestionarea memoriei este atunci când pentru fiecare grămadă de date dintr-un program trebuie să alocați manual spațiu în RAM. Asigurați-vă că datele nu depășesc această locație. Nu uitați să eliberați acest spațiu atunci când datele nu mai sunt necesare. În general, hemoroizii infernali.

În Python, nu trebuie să vă gândiți la asta: limbajul de programare va face totul pentru programator. Adevărat, nu o va face perfect: trebuie să știți cum funcționează Python cu memoria.

Si mult mai mult

Pe lângă cele de mai sus, Python este renumit pentru multe alte lucruri: indentare, introspecție, zen, portabilitate, GIL, nume.

De ceva vreme, mi se învârte în cap gândul dacă ar trebui să scriu o scurtă notă pe tema de ce merită învățat limbajul de programare Python și, mai mult, să creez proiecte software în el.

Unii dintre voi știți că recent am participat la cel mai mare eveniment din comunitatea de programare Python - . Toate cheltuielile au fost acoperite integral de mine, fără implicarea sponsorilor sau angajatorilor. Poate că, pentru a participa la un astfel de eveniment, trebuie să ai un anumit atașament emoțional față de subiect, iar acest lucru este adevărat.

Ce este Python?

Python este un limbaj de programare de uz general care vizează în primul rând creșterea productivității programatorului însuși, mai degrabă decât codul pe care îl scrie. Într-un limbaj uman simplu, puteți scrie aproape orice în Python (aplicații web/desktop, jocuri, scripturi de automatizare, sisteme complexe de calcul, sisteme de control al suportului vieții și multe altele) fără probleme semnificative. Mai mult, bariera de intrare este scăzută, iar codul este în mare măsură concis și de înțeles chiar și pentru cei care nu au scris niciodată în el. Datorită simplității codului, întreținerea ulterioară a programelor scrise în Python devine mai ușoară și mai plăcută în comparație cu Java sau C++. Și din punct de vedere al afacerii, aceasta presupune o reducere a costurilor și o creștere a productivității angajaților.

Pentru a demonstra concizia, să ne uităm la codul Python și Java care deschide un fișier și stochează conținutul acestuia într-o variabilă:

Fișier = open("file.txt") content = file.read()

Import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; public static void main(String args) aruncă IOException ( String content = new String(Files.readAllBytes(Paths.get("file.txt"))); )

Codul Java folosește o interfață actualizată pentru a lucra cu sistemul de intrare/ieșire. Vechiul mod ar arăta și mai rău :)

Cine folosește Python?

Chiar și cel mai avansat limbaj de programare nu are valoare dacă nimănui nu-i pasă de el. Una dintre componentele succesului oricărei tehnologii este comunitatea creată în jurul acesteia. Acesta este cel care predetermina viitorul vector de dezvoltare prin eforturi comune. Comunitatea Python este una dintre cele mai puternice din lumea IT. Acesta este un organism complex, bine organizat și în continuă dezvoltare. Pe lângă sute de mii de dezvoltatori individuali și mici companii de software, Python este susținut de giganți IT precum:

Si multe altele. Impresionant, nu-i așa? În ceea ce privește proiectele mari și populare scrise în Python, aceștia sunt monștri precum:

  • YouTube (majoritatea bazei de cod este în întregime în Python)
  • Prima versiune a păianjenului de căutare Google a fost scrisă în Python, iar mai târziu, din cauza cerințelor extrem de mari de încărcare și viteză, a fost rescrisă în C++.
  • Client desktop Dropbox
  • Reddit
  • Instagram (500 de milioane de utilizatori Python)
  • Bitbucket (Python 2.7 și Django 1.7.11)
  • EVE Online MMOPPG
  • Quora
  • Spotify
  • Serviciile critice ale PayPal, procesează până la 2 miliarde de solicitări pe zi. Puteți afla mai multe în podcastul TalkPython, episodul #54
  • Servicii Mozilla
  • Serviciu popular de idei Pinterest
  • Serviciu de comentarii Disqus (eu îl folosesc pe acest blog, serviciul este implementat în Django)
  • Servicii interne Facebook (vezi posterul din al meu)
  • Sistemul de control al versiunilor Mercurial (până în urmă cu ceva timp, dezvoltatorii Python îl foloseau în munca lor)
  • Servicii de jocuri de război

și sunt sigur că există multe alte aplicații interesante și populare pe care am uitat să le enumer aici (bun venit în comentarii).

Ce înseamnă acest lucru? Despre multe lucruri. Și cel mai important lucru este că marile corporații nu se tem să-și construiască afacerea în jurul Python, sunt încrezători că tehnologia va supraviețui și, prin urmare, nu ar trebui să se aștepte la probleme cu găsirea specialiștilor. Mai mult, varietatea aplicațiilor este și ea impresionantă, demonstrând gama largă de probleme pe care Python le rezolvă cu măiestrie.

Într-o notă despre cartea „”, am scris că a fost luată ca bază ca material educațional pentru un curs introductiv de programare la MIT; limbajul computerului la acea vreme era dialectul Lisp-Scheme. Vremurile se schimbă, acum ce conduce ca lingua franca digitală...? Așa este, Python. Este folosit ca un instrument de încredere într-o astfel de ambarcațiune uimitoare.

Dezavantaje Python

Un cititor care nu este familiarizat cu Python poate avea impresia că este un panaceu pentru toate bolile, un glonț de argint și un leac pentru cancer. Dar nu totul este atât de roz și minunat. Ca orice, Python are o serie de deficiențe proprii, care uneori pot fi critice și pot influența alegerea nu în favoarea șarpelui.

Viteză

Unul dintre principalele dezavantaje este viteza de execuție relativ mică. Python este un limbaj tip complet dinamic, cu management automat al memoriei. Deși la prima vedere acest lucru poate părea un avantaj, atunci când se dezvoltă programe cu cerințe de eficiență crescute, Python poate fi semnificativ mai lent decât frații săi statici (C/C++, Java, Go). În ceea ce privește omologii săi dinamici (PHP, Ruby, JavaScript), lucrurile stau mult mai bine aici; Python în majoritatea cazurilor execută codul mai rapid datorită precompilării la bytecode și a unei părți semnificative a bibliotecii standard scrise în C. La conferințe am avut ocazia să vorbesc cu băieți de la companii mari precum Wargaming, mulți dintre ei au tendința de a se îndrepta către statică, iar cel mai adesea acesta este Go, Rust.

Un raport interesant despre viteza și optimizarea CPython (implementarea nativă a limbajului în C) a fost citit la PiterPy 2015 din Sankt Petersburg:

Tastare dinamică

Pentru programatorii începători, un limbaj de programare tip dinamic la prima vedere (și la a doua și chiar la a treia) poate părea o ieșire, o plăcere cerească, mai ales pentru cei care s-au confruntat anterior cu „statica”. Dar există și o parte întunecată a lunii. Pe măsură ce baza de cod crește (și acesta este adesea un proces inevitabil în proiectele de succes), poate fi foarte dificil să țineți evidența tipului de date transferate unul altuia (și în absența documentației și a testelor clare, este aproape imposibil). ), prin urmare apar probleme atunci când, de exemplu, încearcă să apeleze o metodă pe None sau să acceseze atributul în timpul execuției codului. Pentru a rezolva acest tip de problemă, limbajele dinamice sunt acoperite cu tot felul de cârje, fluiere și trucuri sub formă de adnotări de tip, proiecte mypy pentru analiza codului static și așa mai departe. Acest lucru, la rândul său, pune o conotație negativă pe partea estetică a codului.

Din cauza limitărilor de limbaj, apar implementări alternative ale interpreților: PyPy, Pyston, Jython, Cython și multe altele. Acum tendința este clar vizibilă în această direcție, de exemplu, Pyston este dezvoltat în interiorul zidurilor așa-numitului. Mecca programatorilor Python - Dropbox :)

Concluzie

În ciuda mai multor probleme inerente din punct de vedere istoric Python, acesta continuă să fie un instrument principal într-o serie de nișe:

  • Dezvoltare de aplicații web (aici avem liderul incontestabil sub forma Django).
  • Analiza datelor și învățarea automată (scipy, scikit-learn, panda, pachete numpy recunoscute de comunitatea științifică globală).
  • Introducere în programare (pygame, broasca testoasă sunt bune la motivarea copiilor să înceapă să codeze).
  • Prototiparea rapidă a ideilor în afaceri datorită abundenței de biblioteci gata făcute, o barieră scăzută la intrarea în limbaj și productivitatea ridicată a programatorilor care scriu în Python.
  • Scrierea de scripturi (scenarii) pentru automatizarea sarcinilor. Python vine în mod implicit cu toate distribuțiile de sisteme asemănătoare Unix și este un înlocuitor excelent pentru Bash în toate sensurile.

Sunt sigur că am uitat altceva. În general, Python guvernează!

Legături

  • Excelent raport despre GIL(Global Interpreter Lock). GIL este unul dintre blocajele serioase din Python pe drumul către programarea paralelă.
  • Discuția lui Guido van Rossum despre adnotări de tip la PyCon US de anul trecut.
  • Raymond Hettinger la PyCon de anul trecut citeste un reportaj excelent pe tema abordării pythonice a scrierii codului, arătând cum să transformați cod asemănător Java în cod asemănător Python. Necondiţionat trebuie să urmăriți.
  • Postare pe blogul tehnologiei Instagram despre modul în care gestionează sarcinile de lucru folosind Python și Django.
  • 10 mituri ale Enterprise Python pe blogul PayPal.
  • Serghei Savenkov

    un fel de recenzie „scurtă”... de parcă s-ar grăbi undeva