# 2. Używanie interpretera Pythona

## 2.1. Wywoływanie Interpretera

Interpreter Pythona jest zazwyczaj zainstalowany jako `/usr/local/bin/python3.13` na maszynach, na których jest dostępny; wstawienie `/usr/local/bin` w ścieżkę wyszukiwania uniksowego shella umożliwia jego uruchomienie przez wpisanie komendy:

    python3.13

do shella. [1] Jako że wybór katalogu, w którym znajdzie się interpreter, jest opcją instalacji, możliwe są inne lokalizacje; sprawdź ze swoim lokalnym pythonowym guru lub administratorem systemu. (Na przykład `/usr/local/python` jest popularną alternatywną lokalizacją.)

Na maszynach Windows, gdzie instalowałeś Pythona z Microsoft Store, będzie dostępna komenda `python3.13`. Jeśli masz zainstalowany launcher py.exe, możesz użyć komendy `py`. Inne sposoby uruchomienia Pythona znajdziesz w Excursus: Setting environment variables.

Wpisanie znaku końca pliku (`Control`-`D` w Uniksie, `Control`-`Z` w Windowsie) w główną konsolę powoduje zakończenie interpretera z kodem wyjścia zero. Jeśli to nie zadziała, możesz opuścić interpreter wpisując następującą komendę: `quit()`.

Funkcje edycji linii interpretera obejmują interaktywną edycję, zastępowanie historii i uzupełnianie kodu w większości systemów. Prawdopodobnie najszybszym sposobem sprawdzenia, czy posiadasz rozszerzone właściwości linii poleceń, jest wpisanie słowa przy prompcie Pythona, następnie naciśnięcie strzałki w lewo (lub `Control`-`b`). Jeśli kursor przesunie się, masz możliwość edycji linii poleceń; zobacz wprowadzenie do klawiszy w dodatku Interaktywna edycja danych wejściowych oraz podstawianie z historii. Jeśli nic się nie zdarzy lub pojawi się ciąg znaków jak `^[[D` lub `^B`, to edycja linii poleceń nie jest dostępna; będziesz mógł tylko używać klawisza backspace, aby usuwać znaki z bieżącego wiersza.

Interpreter działa podobnie do uniksowej powłoki: kiedy jest wywołany ze standardowym wejściem połączonym z urządzeniem tty, czyta i wykonuje komendy interaktywnie. Gdy zostanie wywołany z argumentem w postaci nazwy pliku lub z plikiem jako standardowym wejściem, czyta i wykonuje skrypt z tego pliku.

Drugim sposobem na uruchomienie interpretera jest `python -c komenda [arg] …`, co wykonuje polecenie (polecenia) zawarte w komendzie, analogicznie do opcji `-c` powłoki. Jako że polecenia Pythona często zawierają spacje lub inne znaki, które są interpretowane przez powłokę, zazwyczaj najlepiej jest umieścić komendę w całości w cudzysłowie.

Niektóre moduły Pythona są też przydatne jako skrypty. Mogą być one wywołane przy użyciu `python -m moduł [arg] …`, co wykonuje plik źródłowy dla modułu tak jakbyś wpisał jego pełną nazwę w linii komend.

Kiedy używa się pliku skryptu, czasami przydatne jest móc uruchomić skrypt i następnie wejść w interaktywny. Można to zrobić przekazując `-i` przed skryptem.

Wszystkie opcje linii komend są opisane w Command line and environment.

### 2.1.1. Przekazywanie argumentów

Nazwa skryptu i dodatkowe argumenty, gdy są znane interpreterowi, są zamieniane w listę ciągów znaków i przypisywane zmiennej `argv` w module `sys`. Możesz dostać się do tej listy wykonując `import sys`. Długość listy jest przynajmniej równa jeden; gdy nie podano nazwy skryptu i żadnych argumentów wywołania, `sys.argv[0]`, jest pustym ciągiem. Gdy nazwa skryptu przekazana jest w postaci `'-'` (co oznacza standardowe wejście), `sys.argv[0]` przyjmuje wartość `'-'`. Gdy zostanie użyte `-c` komenda, `sys.argv[0]`, przyjmuje wartość `'-c'`. Gdy zostanie użyte `-m` moduł, `sys.argv[0]` przyjmie wartość pełnej nazwy znalezionego modułu. Opcje znalezione za `-c` komenda lub `-m` moduł nie są konsumowane przez przetwarzanie opcji interpretera Pythona, lecz pozostawiane w `sys.argv` do obsłużenia przez komendę lub moduł.

### 2.1.2. Tryb interaktywny

Jeżeli instrukcje są wczytywane z urządzenia tty, mówi się wtedy, że interpreter jest w trybie interaktywnym. Interpreter zachęca wtedy do podania kolejnej instrukcji wyświetlając tzw. znak zachęty, zwykle w postaci trzech znaków większości (`>>>`). Gdy wymaga kontynuacji instrukcji, w następnej linii wyświetla drugi znak zachęty, domyślnie trzy kropki (`...`). Interpreter wyświetla wiadomość powitania zawierającą jego wersję i notatkę o prawach autorskich przed wyświetleniem pierwszego znaku zachęty:

    $ 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.
    >>>

Linie kontynuacji są potrzebne przy wejściu w wielowierszową konstrukcję. Jako przykład, spójrzmy na to wyrażenie `if`:

    >>> the_world_is_flat = True
    >>> if the_world_is_flat:
    ...     print("Uważaj, żeby nie spaść!")
    ...
    Uważaj, żeby nie spaść!

Więcej na temat trybu interaktywnego znajdziesz w Tryb interaktywny.

## 2.2. Interpreter i jego środowisko

### 2.2.1. Strona kodowa kodu źródłowego

Domyślnie pliki źródłowe Pythona są traktowane jako zakodowane w UTF-8. W tym kodowaniu znaki większości języków na świecie mogą być użyte jednocześnie w literałach ciągów znaków, identyfikatorach i komentarzach – jednak biblioteka standardowa używa jedynie znaków ASCII dla identyfikatorów, tej konwencji powinien przestrzegać każdy przenośny kod. Aby wyświetlić odpowiednio wszystkie te znaki, twój edytor musi rozpoznawać, że plik jest UTF-8 i musi używać fontu, który wspiera wszystkie znaki w tym pliku.

Aby zadeklarować kodowanie inne niż domyślne, powinno się dodać specjalną linię komentarza jako pierwszą linię pliku. Składnia jest następująca:

    # -*- coding: encoding -*-

gdzie encoding jest jednym z poprawnych `codecs` wspieranych przez Pythona.

Na przykład aby zadeklarować używanie kodowania Windows-1252, pierwszą linią twojego kodu źródłowego powinno być:

    # -*- coding: cp1252 -*-

Jedynym wyjątkiem dla reguły pierwszej linii jest, kiedy kod źródłowy zaczyna się uniksową linią „shebang”. W tym przypadku deklaracja kodowania powinna być dodana jako druga linia pliku. Na przykład:

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

Przypisy

[ 1 ]

Na Uniksie, interpreter Pythona 3.x nie jest domyślnie zainstalowany z plikiem wykonywalnym o nazwie `python`, aby nie konfliktował on z jednocześnie zainstalowanym plikiem wykonywalnym Pythona 2.x.