2. Używanie interpretera Pythona
********************************


2.1. Wywoływanie Interpretera
=============================

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

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ą.)

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.

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 Interaktywna edycja
danych wejściowych oraz podstawianie z historii. 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
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.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.
   >>>

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.
