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.
