Python interpreter
Főnév
Python interpreter (tsz. Python interpreters)
- (informatika) A Python programozási nyelv egyik legfontosabb része az interpreter. Valahányszor Python kódot futtatsz, valójában az interpreter végzi el a háttérben a munkát. Ahhoz, hogy igazán jól megértsd, hogyan működik a Python, érdemes alaposan megismerkedni az interpreter fogalmával, működésével és felhasználási lehetőségeivel.
Mi az az interpreter?
Definíció
Egy interpreter olyan program, amely egy másik program (pl. Python kód) utasításait sorosán olvassa be, értelmezi, és hajtja végre.
- Nem kell lefordítani a teljes kódot futtatás előtt.
- A program minden utasítását egyből végrehajtja, amint azt beolvasta.
Ez különbözik a fordító (compiler) működésétől, amely előre lefordítja a teljes programot gépi kódra (pl. C, C++ fordító), és utána futtatja.
Példa
print("Hello, World!")
Ha ezt a sort lefuttatod a Python interpreterrel, az interpreter:
- Beolvassa a sort.
- Értelmezi: “print függvény meghívása”.
- Végrehajtja: kiírja a szöveget a képernyőre.
Hogyan futtassuk a Python interpretert?
Parancssorból
Ha telepítetted a Python-t, indíthatod az interpretert így:
$ python3
vagy (egyes rendszereken):
$ python
Megjelenik a Python interaktív mód:
Python 3.11.1 (default, Jan 2023, ...)
[GCC ...] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
A >>> jel az úgynevezett prompt, itt adhatsz meg Python utasításokat egyenként:
>>> 2 + 2
4
>>> print("Hello")
Hello
Ebben a módban soros végrehajtás történik.
Script futtatása
Ha van egy .py kiterjesztésű fájlod, azt is lefuttathatod:
$ python3 my_script.py
Ilyenkor a Python interpreter beolvassa a fájl teljes tartalmát, és soronként végrehajtja.
Hogyan működik a Python interpreter belsőleg?
A következő lépésekben dolgozik:
- Lexikai elemzés (tokenizálás) A forráskódot kisebb darabokra, ún. tokenekre bontja (szavak, számok, operátorok stb.).
- Szintaktikai elemzés (parsing) A tokeneket szintaktikai fákba rendezi, hogy megértse a kód szerkezetét.
- Bájtkód generálás A Python nem közvetlenül gépi kódot generál, hanem bájtkódot (
.pyc), ami egy köztes, platformfüggetlen kód. - Bájtkód futtatás A Python saját virtuális gépe (Python Virtual Machine, PVM) hajtja végre a bájtkódot.
Folyamatábra
Forráskód (.py) → Tokenek → Szintaxisfa → Bájtkód (.pyc) → Python Virtual Machine → Eredmény
Python implementációk (interpreter változatok)
Nem csak egyféle Python interpreter létezik! Néhány ismert változat:
| Interpreter | Leírás |
|---|---|
| CPython | A “klasszikus” Python interpreter, C nyelven írva. Ez a hivatalos referencia-implementáció. |
| PyPy | Nagyon gyors interpreter, Just-In-Time (JIT) fordítást alkalmaz. |
| Jython | Python, amely a Java platformon fut (Java Virtual Machine). |
| IronPython | .NET környezethez készült Python implementáció. |
| MicroPython | Mikrokontrollerekhez optimalizált Python (pl. ESP32, Raspberry Pi Pico). |
A legtöbben CPython-t használják, hacsak nincs különleges teljesítményigény.
Interaktív Python interpreter használata
Az interpreter interaktív módja remek eszköz:
- gyors próbálgatáshoz,
- hibakereséshez,
- oktatáshoz.
Példa interaktív munkamenetre
>>> def square(x):
... return x * x
...
>>> square(5)
25
>>> square(10)
100
Ilyen módon könnyen tesztelhetsz kódot anélkül, hogy külön fájlt írnál.
Interpreter beállításai és környezeti változók
Néhány hasznos környezeti változó és opció:
- PYTHONPATH: Kiegészítő könyvtárakat vehetsz fel, amiből a Python keres modulokat.
- PYTHONSTARTUP: Ha megadsz egy fájlt, az interpreter elindításakor automatikusan lefuttatja azt (pl. egyéni beállításokat betölt).
- python -O: Optimalizált futtatás, eltávolítja a
__debug__-hoz kapcsolódó kódot. - python -m modul: Modul futtatása parancssorból.
Hogyan találja meg az interpreter a modulokat?
Amikor import-álsz egy modult, a Python interpreter sorrendben végigkeresi az ún. modul keresési útvonalat (sys.path listában tárolva):
- A futtatott script könyvtára.
- PYTHONPATH-ben megadott könyvtárak.
- Python standard könyvtárai.
- Telepített csomagok (pl. site-packages).
Ha nem találja a modult, ModuleNotFoundError hiba jön.
Hogyan működik az interpreter a REPL környezetben?
A Python interaktív módját néha REPL-nek (Read-Eval-Print Loop) is hívjuk:
- Read – beolvassa a beírt parancsot.
- Eval – értékeli a parancsot (értelmezi, végrehajtja).
- Print – kiírja az eredményt (ha van).
- Loop – visszatér a prompt-hoz, és várja a következő parancsot.
Ez a működés az, ami miatt a >>> után azonnal kapod az eredményt.
A Python interpreter határai
Előnyök:
✅ Gyors fejlesztési ciklus (nem kell előre fordítani). ✅ Nagyon dinamikus (futás közben is létrehozhatsz típusokat, függvényeket). ✅ Kiváló interaktív használat.
Hátrányok:
⚠️ Lassabb, mint a lefordított nyelvek (pl. C, C++). ⚠️ A bájtkód csak a Python VM-en futtatható. ⚠️ Nem alkalmas natív gépi kód generálására (kivéve speciális eszközökkel, pl. Cython).
Modern alternatívák és kiegészítők
- IPython: kibővített, interaktív interpreter (támogatja a szintaxiskiemelést, auto-complete-et, shell-parancsokat).
- Jupyter Notebook: webes REPL + dokumentáció + vizualizáció + futtatható kód egy helyen.
Sok adatkutató és tudós ma Jupyter Notebookot használ Python kód futtatásához.
Összefoglalás
A Python interpreter a Python nyelv szíve. Ő végzi:
- a forráskód feldolgozását,
- a szintaktikai elemzést,
- a bájtkód generálást,
- a kód végrehajtását a PVM segítségével.
Kétféle módon használhatod:
- Interaktív mód (REPL): gyors próbálgatás, tanulás, prototípuskészítés.
- Script futtatása:
.pyfájlokból történő programfuttatás.
Ha megérted az interpreter működését:
- könnyebben megérted, hogyan dolgozik a Python kódod,
- jobban tudod optimalizálni a programjaidat,
- megérted, miért fontos a
__main__minta és a modul-importálás sorrendje.
- Python interpreter - Szótár.net (en-hu)
- Python interpreter - Sztaki (en-hu)
- Python interpreter - Merriam–Webster
- Python interpreter - Cambridge
- Python interpreter - WordNet
- Python interpreter - Яндекс (en-ru)
- Python interpreter - Google (en-hu)
- Python interpreter - Wikidata
- Python interpreter - Wikipédia (angol)