2. Utilizarea interpretorului de Python
***************************************


2.1. Invocarea interpretorului
==============================

Interpretorul de Python este instalat, de obicei, ca
"/usr/local/bin/python3.13" în mașinile de calcul pe care este
disponibil; dacă adăugați "/usr/local/bin" la calea de căutare a
interpretorului dumneavoastră de comenzi Unix, atunci veți putea să-l
porniți tastând comanda:

   python3.13

în terminal. [1] Deoarece alegerea directorului în care se găsește
interpretorul este o opțiune de instalare, există și alte locuri
posibile; întrebați-l de ele fie pe gurul de Python din partea locului
fie pe administratorul de sistem. (De exemplu, "/usr/local/python"
este o locație alternativă populară.)

Pe mașinile Windows pe care ați instalat Python-ul luat din Microsoft
Store este disponibilă comanda "python3.13". Dacă ați instalat
lansatorul py.exe, atunci puteți folosi comanda "py". Vedeți Excurs:
setarea variabilelor de mediu pentru alte modalități de a lansa în
execuție Python-ul.

Tastarea caracterului sfârșit-de-fișier ("Control"-"D" în Unix,
"Control"-"Z" în Windows) la promptul principal va face ca
interpretorul să încheie execuția cu codul de ieșire zero. Dacă
această acțiune nu are niciun efect, atunci veți putea ieși din
interpretor tastând comanda: "quit()".

The interpreter's line-editing features include interactive editing,
history substitution and code completion on most systems. Perhaps the
quickest check to see whether command line editing is supported is
typing a word in on the Python prompt, then pressing Left arrow (or
"Control"-"b"). If the cursor moves, you have command line editing;
see Appendix Editarea interactivă a datelor de intrare și substituții
în istoric for an introduction to the keys. If nothing appears to
happen, or if a sequence like "^[[D" or "^B" appears, command line
editing isn't available; you'll only be able to use backspace to
remove characters from the current line.

Interpretorul operează cumva asemănător modului în care o face
interpretorul de comenzi Unix: atunci când îl apelați dintr-un input
standard conectat la un dispozitiv tty, el citește și execută
comenzile în mod interactiv; dacă îl apelați având ca argument un nume
de fișier sau cu un fișier pe post de input standard, el citește și
execută un *script* din respectivul fișier.

Al doilea mod de pornire a interpretorului este "python -c comanda
[arg] ...", ceea ce va produce execuția instrucțiunilor din *comanda*,
la fel ca atunci când folosim opțiunea "-c" a interpretorului de
comenzi. Dat fiind că instrucțiunile Python conțin, în mod obișnuit,
spații goale ori diverse caractere socotite drept speciale de către
interpretorul de comenzi, vă recomandăm să încadrați *comanda* cu
ghilimele.

Unele module Python sunt utile și ca scripturi. Ele pot fi invocate cu
"python -m modulul [arg] ...", ceea ce va produce execuția fișierului-
sursă al modulului *modulul* la fel ca atunci când ați fi scris numele
complet al acestuia în linia de comandă.

Când folosim fișierul unui script, este util, uneori, să putem mai
întâi rula scriptul iar apoi reveni la modul interactiv de lucru.
Aceasta se poate face inserând "-i" înaintea scriptului.

Toate opțiunile din linia de comandă sunt descrise în Linia de comandă
și mediul de execuție.


2.1.1. Transmiterea argumentelor
--------------------------------

Atunci când îi sunt făcute cunoscute interpretorului, numele unui
script și argumentele adiționale de după el sunt transformate într-o
listă de șiruri de caractere care îi este atribuită variabilei "argv"
din modulul "sys". Puteți accesa această listă executând "import sys".
Lungimea listei trebuie să fie cel puțin 1; dacă nu sunt inserate nici
scriptul nici argumentele, "sys.argv[0]" va fi șirul nul. Dacă numele
scriptului este introdus ca "'-'" (ceea ce desemnează inputul
standard), atunci "sys.argv[0]" va fi setat ca "'-'". Când se
folosește "-c" *comandă*, "sys.argv[0]" va fi setat la "'-c'". Când se
folosește "-m" *modul*, "sys.argv[0]" va fi setat la numele complet al
locației modulului. Opțiunile ce vor fi găsite după "-c" *comandă* ori
"-m" *modul* nu vor fi consumate la procesarea de opțiuni a
interpretorului de Python ci vor fi lăsate în "sys.argv" pentru a fi
manevrate fie de către comandă fie de către modul.


2.1.2. Modul interactiv
-----------------------

Atunci când comenzile se citesc dintr-un dispozitiv tty (terminal), se
spune că interpretorul se găsește în *modul interactiv*. Când este în
acest mod, el cere o comandă nouă afișând *promptul principal*, de
obicei sub forma unui set de trei caractere mai-mare-ca (">>>");
pentru a trece pe linia de continuare a unei comenzi, el afișează
*promptul secundar*, format de obicei din trei puncte ("...").
Interpretorul printează un mesaj de bun-venit care cuprinde numărul
versiunii sale și o informare despre drepturile de autor înainte să
afișeze primul prompt:

   $ python3.13
   Python 3.13 (default, April 4 2023, 09:25:04)
   [GCC 10.2.0] on linux
   Type "help", "copyright", "credits" or "license" for more information.
   >>>

Liniile de continuare sunt necesare atunci când inserăm un construct
de mai multe linii. De exemplu, să aruncăm o privire asupra următoarei
instrucțiuni "if":

   >>> pământul_e_plat = True
   >>> if pământul_e_plat:
   ...     print("Atenție să nu cădeți de pe el!")
   ...
   Atenție să nu cădeți de pe el!

Pentru mai multe despre modul interactiv, vedeți Modul interactiv.


2.2. Interpretorul și mediul său
================================


2.2.1. Codificarea codului-sursă
--------------------------------

În mod obișnuit, fișierele-sursă Python sunt considerate a fi
codificate în UTF-8. Sub această codificare, caracterele majorității
limbilor lumii pot fi folosite fără nicio restricție atât în constante
de tip șir de caractere cât și în identificatori ori în comentarii ---
chiar dacă biblioteca standard utilizează numai caractere ASCII pentru
identificatori, convenție ce ar trebui îndeplinită de către orice fel
de cod portabil. Pentru a afișa corect aceste caractere, editorul
dumneavoastră trebuie să recunoască fișierul ca fiind UTF-8 și trebuie
să utilizeze un font care suportă toate caracterele din fișier.

Pentru declararea unei codificări diferite de cea implicită, o linie
specială de comentarii trebuie inserată ca *prima* linie a fișierului.
Sintaxa ei este după cum urmează:

   # -*- coding: codificare -*-

unde *codificare* este unul dintre "codec-urile" (adică, un
*codificator-decodificator*) valide permise de Python.

De exemplu, pentru a declara că urmează să fie folosită codificarea
Windows-1252, prima linie din codul-sursă al dumneavoastră trebuie să
fie:

   # -*- coding: cp1252 -*-

O excepție de la regula *primei linii* este atunci când codul-sursă
începe cu o linie "shebang" UNIX. În această situație, declarația
codificării trebuie inserată pe cea de-a doua linie a fișierului. De
exemplu:

   #!/usr/bin/env python3
   # -*- coding: cp1252 -*-

-[ Note de subsol ]-

[1] În Unix, interpretorul de Python 3.x nu este instalat implicit cu
    numele de executabil "python", astfel că nu se va intra în
    conflict (de nume) cu niciun executabil de Python 2.x deja
    instalat.
