Python jest językiem skrypowym, co oznacza, że kod jest zapisywany w skryptach, czyli w zasadzie zwykłych plikach tekstowych, które są interpretowane w momencie uruchomienia kodu. Interpretacja oznacza przetłumaczenie tekstu napisanego w skrypcie na język rozumiany przez komputer. Komputer do wykonania kodu napisanego w jakimkolwiek języku programowania wymaga interpretera. Obecnie wraz z pobraniem Pythona otrzymujemy również jego interpreter. Jest to rodzaj programu wykonującego inne programy, czyli swego rodzaju warstwa logiki pomiędzy kodem a urządzeniem. 

Co dzieje się po uruchomieniu skryptu?

Gdy uruchomimy skrypt w Pythonie zostaje wykonanych kilka operacji, jeszcze zanim kod zostanie w ogóle wykonany.

Przede wszystkim kod źródłowy jest tłumaczony na kod bajtowy (nie jest to jednak kod maszynowy), zachodzi zatem kompilacja z kodu źródłowego do kodu bajtowego…

Kod bajtowy w Pythonie

…krok 1. Kompilacja do kodu bajtowego

Dlaczego Python kompiluje tekst źródłowy do kodu bajtowego? Ponieważ w ten sposób kod źródłowy staje się niezależny od platformy. Kod bajtowy działa również o wiele szybciej od kodu źródłowego. Przy następnym uruchomieniu skryptu , jeśli nie doszło do żadnej zmiany w kodzie, Python po prostu uruchomi plik .pyc bez przeprowadzania kompilacji. Żeby upewnić się, że kod źródłowy i bajtowy się zgadzają, przed uruchomieniem skryptu sprawdzane są znaczniki czasu ostatniej modyfikacji obu plików.

Jak poznać, że doszło do takiej właśnie kompilacji i mamy już gotowy kod bajtowy?

Kod bajtowy danego programu jest zapisywany z rozszerzeniem .pyc i najczęściej znajduje się w nie pod folderze __pycache__. Można go znaleźć w katalogu z plikami źródłowymi.

Krok 2. Maszyna Wirtualna Pythona

Kod źródłowy w postaci kodu bajtowego jest przekazywany do maszyny wirtualnej Pythona (Python Virtaul Machine) aka silnik wykonawczy Pythona, czyli silnika wykonawczego tego języka. Dopiero ona tłumaczy otrzymany kod na kod maszynowy, wywołując go na procesorze. Maszyna wirtualna Pythona to tak naprawdę jedna wielka pętla, która po kolei wykonuje zapisane instrukcje kodu bajtowego.

Czy maszynę wirtualną Pythona trzeba w jakiś specjalny sposób pobrać?

Nie. Jest ona częścią pakietu, jaki jest instalowany na naszym komputerze podczas instalacji Pythona. Python nie jest typowym językiem kompilowanym, bo zapewnia bardziej elastyczne środowisko  programowania. Programy mogą być zmieniane w zasadzie w locie.

Czym są zamrożone pliki binarne?

Zamrożone pliki binarne są to pliki, które mogą być uruchamiane na różnych komputerach bez konieczności instalowania interpretera Pythona.Stanowią one tak naprawdę jeden pakiet składający się z wykonywalnych plików programu (z rozszerzeniem .exe) zawierających kod bajtowy oraz wirtualnej maszyny Pythona.