# 2. Utilizarea interpretorului de Python

## 2.1. Invocarea interpretorului

The Python interpreter is usually installed as `/usr/local/bin/python3.11` on those machines where it is available; putting `/usr/local/bin` in your Unix shell’s search path makes it possible to start it by typing the command:

    python3.11

î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ă.)

On Windows machines where you have installed Python from the Microsoft Store, the `python3.11` command will be available. If you have the py.exe launcher installed, you can use the `py` command. See Excursus: Setting environment variables for other ways to launch Python.

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()`.

Caracteristicile de editare a liniei de comandă ale interpretorului includ editarea interactivă, substituția istoricului și completarea codului pe sistemele care suportă biblioteca GNU Readline. Cea mai rapidă cale de a vedea dacă este permisă editarea liniei de comandă este să tastați ``Control`-`P`` la primul prompt de Python la care ajungeți. Dacă se aude un bip, atunci dispuneți de editare a liniei de comandă; vedeți Apendicele Editarea interactivă a datelor de intrare și substituții în istoric pentru o prezentare a tastelor. În schimb, dacă fie nu se întâmplă nimic fie ecoul va fi un `^P`, nu aveți editare în linie de comandă; tot ce puteți face este să folosiți backspace-ul pentru eliminarea de caractere din linia curentă.

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.11
    Python 3.11 (default, April 4 2021, 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`:

    >>> the_world_is_flat = True
    >>> if the_world_is_flat:
    ...     print("Be careful not to fall off!")
    ...
    Be careful not to fall off!

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: encoding -*-

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.