Tutorialul de Python
********************

Sfat:

  Tutorialul de față a fost gândit pentru *programatorii* nou-veniți
  în lumea Python-ului, dar **nu** pentru *începătorii* nou-veniți în
  lumea programării.

Python-ul este un limbaj de programare puternic, ușor de învățat. El
are structuri de date de nivel înalt eficiente și o abordare simplă
dar eficace a programării orientate-obiect. Sintaxa elegantă și
tipizarea dinamică ale Python-ului, împreună cu natura sa
interpretată, fac din el un limbaj ideal pentru scriptare și
dezvoltarea rapidă de aplicații în multe domenii pe majoritatea
platformelor de calcul.

Interpretorul de Python și biblioteca standard extinsă sunt
disponibile liber în cod-sursă sau în format binar pentru toate
platformele importante de calcul pe site-ul web Python,
https://www.python.org/, și pot fi distribuite (la) liber. Același
site conține și distribuții de și pointeri către multe module Python
libere ale altor părți, programe și unelte, precum și documentație
adițională.

Interpretorul de Python se extinde ușor cu funcții și tipuri de date
noi implementate în C sau în C++ (ori în alte limbaje apelabile din
C). Python-ul este potrivit, de asemenea, ca limbaj de extindere
pentru aplicații personalizabile.

Acest tutorial îl introduce informal pe cititor în conceptele de bază
și în caracteristicile limbajului și sistemului Python. Țineți seama
de faptul că parcurgerea lui presupune din partea dumneavoastră o
înțelegere (cel puțin) elementară a programării, la nivel general.
Este util să aveți la îndemână un interpretor de Python pentru
experimentări imediate, însă toate exemplele sunt de sine stătătoare,
astfel că tutorialul poate fi citit și fără interpretor.

Pentru o descriere a obiectelor și modulelor standard, vedeți
Biblioteca standard a Python-ului. Referința limbajului Python conține
o definiție mai formalizată a limbajului. Pentru a scrie extensii în C
sau în C++, citiți Extinzând și scufundând interpretorul de Python și
Manualul de referință al API-ului C al Python-ului. Există, de
asemenea, mai multe cărți care studiază Python-ul în profunzime.

Acest tutorial nu încearcă să fie atotcuprinzător și nici să prezinte
fiecare caracteristică, nici măcar fiecare caracteristică de uz
frecvent. În schimb, el introduce multe din caracteristicile notabile
ale Python-ului și vă veți putea face o părere consistentă despre
stilul și specificul limbajului. După citirea lui, veți putea citi și
scrie module și programe Python, respectiv veți fi pregătit să
învățați mai multe despre diversele module de bibliotecă Python
descrise în Biblioteca standard a Python-ului.

Glosarul merită, de asemenea, parcurs.

* 1. Deschizându-vă apetitul

* 2. Utilizarea interpretorului de Python

  * 2.1. Invocarea interpretorului

    * 2.1.1. Transmiterea argumentelor

    * 2.1.2. Modul interactiv

  * 2.2. Interpretorul și mediul său

    * 2.2.1. Codificarea codului-sursă

* 3. O introducere informală în Python

  * 3.1. Folosind Python-ul pe post de calculator

    * 3.1.1. Numere

    * 3.1.2. Text

    * 3.1.3. Liste

  * 3.2. Primii pași în programare

* 4. Mai multe unelte de control al fluxului

  * 4.1. Instrucțiuni "if"

  * 4.2. Instrucțiuni "for"

  * 4.3. Funcția "range()"

  * 4.4. Instrucțiunile "break" și "continue"

  * 4.5. Clauzele "else" ale ciclurilor

  * 4.6. Instrucțiuni "pass"

  * 4.7. Instrucțiuni "match"

  * 4.8. Definirea funcțiilor

  * 4.9. Mai multe despre definirea funcțiilor

    * 4.9.1. Valori implicite pentru argumente

    * 4.9.2. Argumentele cuvânt-cheie

    * 4.9.3. Parametri speciali

      * 4.9.3.1. Argumente pozițional-sau-cuvânt-cheie

      * 4.9.3.2. Parametri numai poziționali

      * 4.9.3.3. Argumente numai cuvinte-cheie

      * 4.9.3.4. Exemple de funcții

      * 4.9.3.5. De reținut

    * 4.9.4. Liste arbitrare de argumente

    * 4.9.5. Despachetarea listelor de argumente

    * 4.9.6. Expresii lambda

    * 4.9.7. Șiruri de documentație

    * 4.9.8. Adnotarea funcțiilor

  * 4.10. Intermezzo: stilul în care scriem cod

* 5. Structuri de date

  * 5.1. Mai multe despre liste

    * 5.1.1. Utilizarea listelor ca stive

    * 5.1.2. Făcând cozi din liste

    * 5.1.3. Comprehensiunea listelor

    * 5.1.4. Comprehensiuni imbricate de liste

  * 5.2. Instrucțiunea "del"

  * 5.3. Tupluri și secvențe

  * 5.4. Seturi

  * 5.5. Dicționare de date

  * 5.6. Tehnici de iterare

  * 5.7. Mai multe despre expresiile de control

  * 5.8. Comparând secvențe și alte tipuri de obiecte

* 6. Module

  * 6.1. Mai multe despre module

    * 6.1.1. Executând module ca scripturi

    * 6.1.2. Calea de căutare a modulelor

    * 6.1.3. Fișiere Python "compilate"

  * 6.2. Module standard

  * 6.3. Funcția "dir()"

  * 6.4. Pachete

    * 6.4.1. Importând * dintr-un pachet

    * 6.4.2. Referințe intra-pachet

    * 6.4.3. Pachete situate în mai multe directoare

* 7. Intrări și ieșiri

  * 7.1. Formatări elegante ale ieșirii

    * 7.1.1. Șiruri de caractere literale formatate

    * 7.1.2. Metoda format() a tipului șir de caractere

    * 7.1.3. Formatare manuală a șirurilor de caractere

    * 7.1.4. Vechiul stil de formatare al șirurilor de caractere

  * 7.2. Citirea și scrierea fișierelor

    * 7.2.1. Metodele obiectelor fișier

    * 7.2.2. Salvarea structurilor de date cu "json"

* 8. Erori și excepții

  * 8.1. Erori de sintaxă

  * 8.2. Excepții

  * 8.3. Tratarea excepțiilor

  * 8.4. Ridicând excepții

  * 8.5. Înlănțuirea excepțiilor

  * 8.6. Excepții definite de utilizator

  * 8.7. Definirea unor acțiuni de curățare

  * 8.8. Acțiuni de curățare predefinite

  * 8.9. Ridicarea și tratarea de excepții grupate, fără legătură una
    cu alta

  * 8.10. Îmbogățind excepțiile cu notițe

* 9. Clase

  * 9.1. O vorbă despre nume și obiecte

  * 9.2. Domenii de valabilitate și spații de nume în Python

    * 9.2.1. Un exemplu cu domenii de valabilitate și spații de nume

  * 9.3. Prima privire aruncată asupra claselor

    * 9.3.1. Sintaxa definiției unei clase

    * 9.3.2. Obiectele clasă

    * 9.3.3. Obiectele instanță

    * 9.3.4. Obiectele metodă

    * 9.3.5. Variabile de clasă și variabile de instanță

  * 9.4. Observații diverse

  * 9.5. Moștenirea

    * 9.5.1. Moștenirea multiplă

  * 9.6. Variabile private

  * 9.7. Șurubărie

  * 9.8. Iteratori

  * 9.9. Generatori

  * 9.10. Expresii generator

* 10. Turul pe scurt al bibliotecii standard

  * 10.1. Interfața cu sistemul de operare

  * 10.2. Caractere de înlocuire pentru fișiere

  * 10.3. Argumente în linia de comandă

  * 10.4. Redirecționarea ieșirii erorilor și încheierea programelor

  * 10.5. Identificarea după tipare a șirurilor de caractere

  * 10.6. Matematică

  * 10.7. Accesul la Internet

  * 10.8. Date calendaristice și momente de timp

  * 10.9. Compresia datelor

  * 10.10. Măsurarea performanțelor

  * 10.11. Controlul calității

  * 10.12. Bateriile sunt incluse

* 11. Turul pe scurt al bibliotecii standard --- Partea II

  * 11.1. Formatarea ieșirii

  * 11.2. Folosirea șabloanelor

  * 11.3. Lucrul cu machete ale înregistrărilor de date binare

  * 11.4. Execuții multifilare

  * 11.5. Jurnalizarea

  * 11.6. Referințe slabe

  * 11.7. Unelte pentru lucrul cu liste

  * 11.8. Aritmetică în virgulă mobilă pentru numere zecimale

* 12. Medii virtuale și pachete

  * 12.1. Introducere

  * 12.2. Crearea de medii virtuale

  * 12.3. Administrarea pachetelor cu pip

* 13. Și acum?

* 14. Editarea interactivă a datelor de intrare și substituții în
  istoric

  * 14.1. Completări din tabulator și editarea istoricului

  * 14.2. Alternative la interpretorul interactiv

* 15. Aritmetică în virgulă mobilă: probleme și limitări

  * 15.1. Erori de reprezentare

* 16. Anexă

  * 16.1. Modul interactiv

    * 16.1.1. Tratarea erorilor

    * 16.1.2. Scripturi Python executabile

    * 16.1.3. Fișierul de pornire pentru sesiunea interactivă

    * 16.1.4. Module de personalizare
