# 2. Używanie Interpretera Pythona

## 2.1. Wywoływanie Interpretera

Interpreter Pythona jest zazwyczaj zainstalowany jako `/usr/local/bin/python3.9` 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.9

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.9`. 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 systemach wspierających bibliotekę GNU Readline. Prawdopodobnie najszybszym sposobem sprawdzenia, czy posiadasz rozszerzone właściwości linii poleceń, jest naciśnięcie `Control-P` za pierwszym znakiem zachęty Pythona, który zobaczysz po jego uruchomieniu. Jeżeli zabrzęczy, masz edycję linii poleceń; zobacz wprowadzenie do klawiszy w dodatku Interactive Input Editing and History Substitution. Jeśli nic się nie zdarzy lub pojawi się `^P`, 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 pojedynczym 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.9
    Python 3.9 (default, June 4 2019, 09:25:04)
    [GCC 4.8.2] 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("Be careful not to fall off!")
    ...
    Be careful not to fall off!

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.