Ja, es ist sowohl kompilierte als auch interpretierte Sprache. Warum nennen wir es dann allgemein als interpretierte Sprache?
sehen, wie es kompiliert und interpretiert wird?
Zunächst möchte ich sagen, dass Ihnen meine Antwort besser gefallen wird, wenn Sie aus der Java-Welt stammen.
In Java wird der Quellcode zuerst über den Javac- Compiler in den Bytecode konvertiert und dann an die JVM weitergeleitet (die für die Generierung des nativen Codes für Ausführungszwecke verantwortlich ist). Jetzt möchte ich Ihnen zeigen, dass wir Java als kompilierte Sprache aufrufen, weil wir sehen können, dass es den Quellcode wirklich kompiliert und die .class- Datei (nichts als Bytecode) durch Folgendes liefert :
javac Hello.java ------- > erzeugt die Datei Hello.class
java Hallo --------> Bytecode zur Ausführung an JVM weiterleiten
Dasselbe passiert mit Python, dh zuerst wird der Quellcode über den Compiler in den Bytecode konvertiert und dann an die PVM weitergeleitet (die für die Generierung des nativen Codes für Ausführungszwecke verantwortlich ist). Jetzt möchte ich Ihnen zeigen, dass wir Python normalerweise als interpretierte Sprache bezeichnen, da die Kompilierung hinter den Kulissen erfolgt
und wenn wir den Python-Code ausführen:
python Hello.py ------- > führt den Code direkt aus und die Ausgabe zeigt, dass der Code syntaktisch korrekt ist
@ python Hello.py Es sieht so aus, als würde es direkt ausgeführt, aber es generiert zuerst den Bytecode, der vom Interpreter interpretiert wird, um den nativen Code für den Ausführungszweck zu erzeugen.
CPython - Übernimmt die Verantwortung für die Zusammenstellung und Interpretation.
Schauen Sie in die folgenden Zeilen, wenn Sie weitere Details benötigen :
Wie bereits erwähnt, kompiliert CPython den Quellcode, die eigentliche Kompilierung erfolgt jedoch mit Hilfe von Cython. Die Interpretation erfolgt dann mit Hilfe von CPython
Lassen Sie uns nun ein wenig über die Rolle des Just-In-Time-Compilers in Java und Python sprechen
In JVM ist der Java-Interpreter vorhanden, der den Bytecode zeilenweise interpretiert, um den nativen Maschinencode für Ausführungszwecke abzurufen. Wenn Java-Bytecode jedoch von einem Interpreter ausgeführt wird, ist die Ausführung immer langsamer. Was ist die Lösung? Die Lösung ist der Just-In-Time-Compiler, der den nativen Code erzeugt, der viel schneller ausgeführt werden kann, als dies interpretiert werden könnte. Einige JVM-Anbieter verwenden Java Interpreter und andere den Just-In-Time-Compiler . Referenz: hier klicken
Verwenden Sie in Python eine andere Python-Implementierung ( PyPy ) anstelle von CPython , um den Interpreter zu umgehen und eine schnelle Ausführung zu erreichen .
Klicken Sie hier für eine andere Implementierung von Python einschließlich PyPy .