Facilitatile limbajului Python (1/4)

Limbajul are o librarie standard foarte bogata, ceea ce il face potrivit pentru multe task-uri, idee provenita din sloganul "batteries included" pentru modulele Python. Libraria este in mod deosebit axata pe partea de Web, cu un numar mare de standarde si protocoale (precum MIME sau HTTP) suportate. Exista de asemenea module pentru crearea interfetelor grafice, conectarea la bazele de date relationale, aritmetica in virgula flotanta de inalta precizie, precum si suport complet pentru manipularea expresiilor regulate.

Limbajul a fost astfel structurat incat sa fie foarte usor lizibil. Se indreapta sper un layout vizual neconventional, foloseste cuvinte cheie in limba engleza acolo unde alte limbaje folosesc punctuatia, si are mult mai putine constructii sintactice decat alte limbaje (de genul C, Perl sau Pascal). Spre exemplu, in Python exista doar doua forme de looping: for name in iterable:, care trece prin continutul unei liste (sau al unei alte secvente iterabile), si while condition:, care executa o bucla atata timp cat o expresie booleana este adevarata.

Indentarea este un aspect neuzual al sintaxei Python, pentru ca se folosesc spatii libere pentru delimitarea blocurilor de program (off-side rule), si pentru ca se foloseste o caracteristica imprumutata din limbajul ABC - in locul punctuatiei, Python foloseste indentarile in sine pentru a delimita blocurile de program. Spre exemplu, o functie de factorial in Python arata astfel:

def factorial(x):
   if x == 0:
      return 1
   else:
      return x * factorial(x-1)

Acest tip de indentare elimina insa ambiguitatile in codul sursa, de exemplu in cazul limbajului C o bucla for ar putea avea instructiunea de ciclare identata, dar si urmatoarea instructiune (care nu mai tine de bucla for) identata la fel ca precedenta, ceea ce in mod clar ar produce confuzii in depanarea codului.

Deoarece Python este un limbaj interpretat cu tipuri dinamice de date, valorile (nu variabilele) specifica tipul. Toate variabilele detin referinte la obiecte, si aceste referinte sunt transmise functiei prin valoare; o functie nu poate schimba valoarea referita de o variabila in functia sa apelanta. Acest mod de transmitere a parametrilor a fost denumit (chiar si de Guido) "Call by object reference", sau "Apel prin referinta obiectului".

Limbajul are o multime de tipuri de baza, suportand tipuri aritmetice de precizie arbitrara, dar si numere complexe. Sunt suportate multe operatii cu string-uri, dar operatiile cu string-uri in Python sunt imutabile (adica o operatie de inlocuire a unui caracter intr-un string in Python returneaza un nou string). Exista suport pentru tipurile colectie (sau container). In general o colectie este un obiect care contine alte obiecte intr-un mod usor de referit (accesat) sau indexat. Colectiile sunt fie secvente, fie mapari. Tipurile secventiale ordonate sunt listele (tablouri dinamice), tuple si string-uri. Toate secventele sunt indexate pozitional (de la 0 la Length-1) si toate (in afara de string-uri) pot contine orice tip de obiect, inclusiv tipuri multiple in aceeasi secventa. Si string-urile si tuplele sunt imutabile, ceea ce le face ideale pentru chei de dictionar. Listele sunt insa mutabile, elementele pot fi inserate, sterse, modificate sau adaugate la sfarsit, sau chiar sortate.

Maparile sunt tipuri neordonate implementate sub forma dictionarelor care mapeaza un set de chei imutabile, catre elemente corespunzatoare, precum functii matematice. Un tip de date set a fost adaugat in versiunea 2.4 - o colectie neindexata, neordonata, fara duplicate, si care implementeaza operatiile teoretice posibile asupra unei multimi: reuniune, intersectie, diferenta, diferenta simetrica, si testare submultime.

In Python, totul este un obiect, inclusiv clasele. Clasele, ca si obiecte, au o clasa cunoscuta sub numele de metaclasa. Este de asemenea suportata mostenirea multipla si amestecurile, precum si introspectii extinse de tipuri si clase. Tipurile pot fi citite si comparate, si sunt instante ale type. Atributele unui obiect pot fi extrase ca si dictionar. Operatorii se pot suprascrie prin definirea unor functii membre speciale.

In ceea ce priveste operatorii, exista operatorii de comparatie, cu o semantica de scurt-circuit (evaluarea se opreste la prima evaluare care satisface conditia) si operatori logici (cu o evaluare minima, de exemplu x/y > 100 nu va produce niciodata o exceptie in cazul diviziunii cu zero).

Continuare >>

Generalitati despre limbaj si istoricul lui
Facilitatile pe care le ofera limbajul Python
Comparatie intre Python si alte limbaje

Pagina dedicata tehnologiei Python va prezinta modurile de folosinta ale acestui limbaj si incearca sa va introduca pas cu pas in modul de organizare a limbajului, structurile sale de control si cateva trucuri care pot fi folosite pentru dezvoltarea aplicatiilor. Detalii...

Aflati detalii despre istoricul limbajului Python, creatorii lui, versiunile existente in momentul de fata, cat de puternic este si pentru ce anume este recomandat, toate in pagina de continut. Detalii...

Spre final, vom compara tehnologia Python cu alte tehnologii similare, vom incerca sa evidentiem punctele forte si punctele slabe ale acesteia, si vom oferi cateva resurse online pentru cei care doresc sa inceapa sa programeze in Python, sau sa isi imbunatateasca cunostintele in acest domeniu. Detalii...