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.

The Python interpreter and the extensive standard library are freely
available in source or binary form for all major platforms from the
Python website, https://www.python.org/, and may be freely
distributed. The same site also contains distributions of and pointers
to many free third party Python modules, programs and tools, and
additional documentation.

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.1.5. Unpacking in Lists and List Comprehensions

  * 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. Brief tour of the standard library

  * 10.1. Operating system interface

  * 10.2. File wildcards

  * 10.3. Command-line arguments

  * 10.4. Error output redirection and program termination

  * 10.5. String pattern matching

  * 10.6. Matematică

  * 10.7. Internet access

  * 10.8. Dates and times

  * 10.9. Data compression

  * 10.10. Performance measurement

  * 10.11. Quality control

  * 10.12. Batteries included

* 11. Brief tour of the standard library --- part II

  * 11.1. Output formatting

  * 11.2. Folosirea șabloanelor

  * 11.3. Working with binary data record layouts

  * 11.4. Execuții multifilare

  * 11.5. Jurnalizarea

  * 11.6. Weak references

  * 11.7. Tools for working with lists

  * 11.8. Decimal floating-point arithmetic

* 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
