Ist Python eine Interpretersprache?
Ich habe mal gelesen das Python nur eine Interpretersprache ist, also man kann den Programmcode nicht kompilieren. Stimmt das?
4 Antworten
Jein.
Python wird in der Regel in einen Bytecode kompiliert, der dann ausgeführt wird. Das ist also ein bisschen ähnlich wie bei Java, funktioniert aber wie ein transparenter Cache: als Anwender merke ich davon nichts, wenn ich nicht will. Für den Anwender ist es eine interpretierte Sprache.
Die Grenzen zwischen interpretiert und kompiliert sind generell fließender, als es anfangs scheint. Speziell dynamisch typisierte und spät bindende Sprachen wie Python, die viele Dinge zur Laufzeit entscheiden, lassen sich weniger gut in einen "festgezurrten" Binärcode kompilieren im Vergleich zu z.B. sowas wie C.
Ja. Es gibt zwar diverse Python-to-EXE-Dinger, aber die packen letztlich nur Python mit deinem Programm zusammen und funktionieren auch nicht immer.
Der einzig zuverlässige Weg für moderne Python-Programme ist also nur mit Interpreter zu laufen.
Das finde ich als ein Nachteil. Das erstaunliche dabei ist, das scheinbar alle Welt auf Python abfährt, wobei Python ein ähnlich alter Hut ist, wie Basic.
Dabei gibt es Basic-IDE die EXE-Dateien erzeugen, die ohne Probleme unter allen WIN-Versionen laufen. Ich finde was will man mehr.
Ja, Python hat einige Nachteile. Einer der größten ist das Konfigurationsmanagement. Wenn dein Python-Programm Abhängigkeiten hat (also Bibliotheken verwendet), kannst du die nicht einfach zu deinem Programm dazupacken. Sie müssen sozusagen in der globalen Umgebung installiert werden. Das ist in der Praxis teils furchtbar umständlich und es muss oft mit "virtuellen Umgebungen" und sowas gearbeitet werden (das macht das beliebte Anaconda). Mitunter ist der einzig vernünftige Weg, komplexe Python-Programme zu verteilen, per Docker-Container...
Ja, das ist korrekt.
Heutige Interpreter kompilieren zwar auch im Hintergrund, aber du erhältst eben nicht das Kompilat in Form einer direkt ausführbaren Datei, die nicht mehr im Quellcode vorliegt.
Ja.
Der Vorteil ist eben, dass man Programme schreiben und direkt ausführen kann.
jede sprache kann kompiliert/interpretiert werden. nur ist die referenzimplementierung von python cpython
"jede sprache kann kompiliert/interpretiert werden."
"kompiliert/interpretiert" ist nicht das Selbe.
Es gibt Programmieroberflächen (Sprachen) die arbeiten nur im Interpretermodus. Wieder andere lassen sowohl den Interpretermodus zu, als auch das Kompilieren.
Um es mal auf den Punkt zu bringen. Worauf ich mit der Frage hinaus wollte, ist dies:
Den Code kann ich nicht ohne die Programmieroberfläche Python laufen lassen. Sprich, es wird am Ende keine direkt auszuführende EXE-Datei erzeugt.
Richtig?