Was ist das für eine Aufregung um Python und CPython (Jython, IronPython) ? , ich verstehe es nicht:
python.org erwähnt, dass CPython ist:
Die "traditionelle" Implementierung von Python (Spitzname CPython)
In einer weiteren Frage zum Stapelüberlauf wird Folgendes erwähnt:
CPython ist der Standard-Bytecode-Interpreter von Python, der in C geschrieben ist.
Ehrlich gesagt verstehe ich nicht, was diese beiden Erklärungen praktisch bedeuten, aber ich dachte, wenn ich CPython verwende, bedeutet dies, dass beim Ausführen eines Python-Beispielcodes dieser in die Sprache C kompiliert und dann ausgeführt wird, als wäre es C. Code
Was genau ist CPython und wie unterscheidet es sich im Vergleich zu Python und sollte ich wahrscheinlich CPython gegenüber Python verwenden und wenn ja, welche Vorteile hat es?
Antworten:
Was ist CPython?
CPython ist die ursprüngliche Python-Implementierung. Dies ist die Implementierung, die Sie von Python.org herunterladen. Die Leute nennen es CPython, um es von anderen, späteren Python-Implementierungen zu unterscheiden und um die Implementierung der Sprach-Engine von der Python- Programmiersprache zu unterscheiden selbst zu unterscheiden.
Der letzte Teil ist, woher Ihre Verwirrung kommt; Sie müssen aus Python-der-Sprache getrennt zu halten , was auch immer läuft den Python - Code.
CPython ist zufällig in C implementiert. Das ist eigentlich nur ein Implementierungsdetail. CPython kompiliert Ihren Python-Code in Bytecode (transparent) und interpretiert diesen Bytecode in einer Auswertungsschleife.
CPython ist auch das erste Unternehmen, das neue Funktionen implementiert. Die Python-the-Language-Entwicklung verwendet CPython als Basis. Weitere Implementierungen folgen.
Was ist mit Jython usw.?
Jython , IronPython und PyPy sind die aktuellen "anderen" Implementierungen der Programmiersprache Python. Diese sind in Java, C # und RPython (eine Teilmenge von Python) implementiert. Jython kompiliert Ihren Python-Code in Java- Bytecode, damit Ihr Python-Code auf der JVM ausgeführt werden kann. Mit IronPython können Sie Python auf der Microsoft CLR ausführen . Mit PyPy, das in (einer Teilmenge von) Python implementiert ist, können Sie Python-Code schneller als CPython ausführen, was Sie zu Recht umhauen sollte. :-)
Eigentlich kompilieren zu C.
CPython übersetzt Ihren Python-Code also nicht selbst nach C. Stattdessen wird eine Interpreter-Schleife ausgeführt. Es gibt ein Projekt, das Python-Code in C übersetzt und Cython heißt . Cython fügt der Python-Sprache einige Erweiterungen hinzu und ermöglicht es Ihnen, Ihren Code in C-Erweiterungen zu kompilieren, Code, der in den CPython-Interpreter integriert wird.
quelle
Sie müssen zwischen einer Sprache und einer Implementierung unterscheiden. Python ist eine Sprache,
Laut Wikipedia ist "eine Programmiersprache eine Notation zum Schreiben von Programmen, die Spezifikationen einer Berechnung oder eines Algorithmus sind". Dies bedeutet, dass es einfach die Regeln und die Syntax zum Schreiben von Code sind. Separat haben wir eine Programmiersprachenimplementierung die in den meisten Fällen der eigentliche Interpreter oder Compiler ist.
Python ist eine Sprache. CPython ist die Implementierung von Python in C. Jython ist die Implementierung in Java und so weiter.
Zusammenfassend: Sie verwenden CPython bereits (wenn Sie von hier heruntergeladen haben ).
quelle
Sogar ich hatte das gleiche Problem zu verstehen, wie sich CPython, JPython, IronPython und PyPy voneinander unterscheiden.
Ich bin also bereit, drei Dinge zu klären, bevor ich anfange zu erklären:
Wenn Sie sich den Bytecode von CPython ansehen möchten, können Sie dies tun. So können Sie:
Schauen wir uns nun den obigen Code an. Die Zeilen 1 bis 6 sind eine Funktionsdefinition. In Zeile 8 importieren wir das 'dis'-Modul, mit dem der von CPython (Interpreter) generierte Python-Bytecode (oder Disassembler für Python-Bytecode) angezeigt werden kann.
HINWEIS : Ich habe den Link zu diesem Code vom # Python-IRC-Kanal erhalten: https://gist.github.com/nedbat/e89fa710db0edfb9057dc8d18d979f9c
Und dann gibt es Jython, das in Java geschrieben ist und am Ende Java-Bytecode erzeugt. Der Java-Bytecode wird in der Java Runtime Environment ausgeführt, einer Implementierung von Java Virtual Machine (JVM). Wenn dies verwirrend ist, vermute ich, dass Sie keine Ahnung haben, wie Java funktioniert. Für Laien wird Java-Code (die Sprache, nicht der Compiler) vom Java-Compiler verwendet und gibt eine Datei (Java-Bytecode) aus, die nur mit einer JRE ausgeführt werden kann. Dies geschieht, damit der Java-Code nach dem Kompilieren im Java-Bytecode-Format, das nur von JRE ausgeführt werden kann, auf andere Computer portiert werden kann. Wenn dies immer noch verwirrend ist, sollten Sie sich diese Webseite ansehen .
Hier können Sie fragen, ob der CPython-Bytecode wie Jython portabel ist, ich vermute nicht. Der in der CPython-Implementierung erzeugte Bytecode war spezifisch für diesen Interpreter, um die weitere Ausführung von Code zu vereinfachen (ich vermute auch, dass eine solche Zwischen-Bytecode-Produktion nur zur Erleichterung der Verarbeitung in vielen anderen Interpreten durchgeführt wird).
Wenn Sie in Jython Ihren Python-Code kompilieren, erhalten Sie Java-Bytecode, der auf einer JVM ausgeführt werden kann.
In ähnlicher Weise kompiliert IronPython (in C # -Sprache geschrieben) Ihren Python-Code in Common Language Runtime (CLR), eine ähnliche Technologie im Vergleich zu JVM, die von Microsoft entwickelt wurde.
quelle
In diesem Artikel wird der Unterschied zwischen verschiedenen Implementierungen von Python ausführlich erläutert. Wie der Artikel es ausdrückt:
quelle
Python ist eine Sprache: eine Reihe von Regeln, mit denen Programme geschrieben werden können. Es gibt verschiedene Implementierungen dieser Sprache.
Unabhängig davon, welche Implementierung Sie durchführen, machen sie fast dasselbe: Nehmen Sie den Text Ihres Programms, interpretieren Sie ihn und führen Sie die Anweisungen aus. Keiner von ihnen kompiliert Ihren Code in C oder einer anderen Sprache.
CPython ist die ursprüngliche Implementierung, die in C geschrieben wurde. (Der Teil "C" in "CPython" bezieht sich auf die Sprache, in der der Python-Interpreter selbst geschrieben wurde.)
Jython ist dieselbe Sprache (Python), wird jedoch mit Java implementiert.
Der IronPython-Interpreter wurde in C # geschrieben.
Es gibt auch PyPy - einen in Python geschriebenen Python-Interpreter. Treffen Sie Ihre Wahl :)
quelle
implementation
bedeutet, welche Sprache zur Implementierung von Python verwendet wurde und nicht, wie Python-Code implementiert werden würde. Der Vorteil der Verwendung von CPython ist die Verfügbarkeit von C-Laufzeit sowie die einfache Integration in C / C ++.CPython wurde also ursprünglich mit implementiert
C
. Es gab andere Gabeln in der ursprünglichen Implementierung, die es Python ermöglichten, Java (JYthon) oder .NET Runtime (IronPython) zu nutzen.Je nachdem, welche Implementierung Sie verwenden, kann die Verfügbarkeit der Bibliothek variieren. Beispielsweise ist Ctypes in Jython nicht verfügbar , sodass eine Bibliothek, die ctypes verwendet, in Jython nicht funktioniert. Wenn Sie eine Java-Klasse verwenden möchten, können Sie dies nicht direkt über CPython tun. Sie benötigen entweder einen Kleber (JEPP) oder Jython (Die Java-Implementierung von Python).
quelle
Sie sollten wissen, dass CPython Multithreading aufgrund der globalen Interpreter-Sperre nicht wirklich unterstützt . Es gibt auch keine Optimierungsmechanismen für die Rekursion und viele andere Einschränkungen, die andere Implementierungen und Bibliotheken zu füllen versuchen.
Sie sollten sich diese Seite ansehen im Python-Wiki .
Schauen Sie sich die Codefragmente auf dieser Seite an. Sie erhalten eine gute Vorstellung davon, was ein Interpreter ist.
quelle
Die ursprüngliche und standardmäßige Implementierung von Python wird normalerweise aufgerufen,
CPython
wenn Sie sie den anderen Optionen gegenüberstellen möchten ( und ansonsten einfach nur „Python“ ). Dieser Name kommt von der Tatsache, dass es in tragbaren codiert istANSI C language code
. Dies ist der Python, den Sie von http://www.python.org abrufen , mit den Distributionen ActivePython und Enthought abrufen und auf den meisten Linux- und Mac OS X-Computern automatisch verwenden. Wenn Sie auf Ihrem Computer eine vorinstallierte Version von Python gefunden haben, ist dies wahrscheinlich der Fall, es seiCPython
denn, Ihr Unternehmen oder Ihre Organisation verwendet Python auf speziellere Weise.quelle
Eine Programmiersprachenimplementierung ist ein System zum Ausführen von Computerprogrammen.
Es gibt zwei allgemeine Ansätze zur Implementierung der Programmiersprache:
Python ist eine interpretierte Programmiersprache auf hoher Ebene, die 1991 von Guido van Rossum entwickelt wurde.
CPython ist eine Referenzversion der Python-Computersprache, die in C geschrieben ist und auch von Guido van Rossum erstellt wurde .
Andere Liste der Python-Implementierungen
Quelle
quelle