Varianten und Versionen (S)

3.3. Varianten und Versionen (S)#

Behauptung

„Es gibt verschiedene Python-Implementierungen und verschiedene Python-Versionen.“

Verschiedene Python-Implementierungen

Im vorherigen Abschnitt haben wir vereinfacht gesagt: Am Ende wird immer Maschinencode ausgeführt. Bei Python liegt ein großer Teil dieses Maschinencodes im Python-Interpreter (also dem Programm, das Ihren Python-Code ausführt). Auf Windows heißt dieses Programm oft python.exe, auf macOS/Linux typischerweise python3.

Wichtig ist: Es gibt nicht „den einen“ Python-Interpreter, sondern mehrere Implementierungen, die denselben Python-Sprachstandard umsetzen.

Je nachdem, in welcher Sprache und für welche Plattform der Interpreter implementiert wurde, unterscheidet man z. B.:

Wenn wir im Allgemeinen von der Python-Implementierung sprechen, meinen wir die bekannteste von allen Implementierungen: CPython. Wir werden ausschließlich diese Implementierung in diesem Kurs verwenden.

CPython

CPython ist eine sog. Referenzimplementierung von Python und wurde vom Erfinder der Sprache selbst (Guido van Rossum) initiiert.

Referenzimplementierung

Als Referenzimplementierung bezeichnen wir eine Implementierung, die einen Standard oder De-facto-Standard darstellt und damit für alle anderen Implementierungen vorgibt, wie sich diese zu verhalten haben und welche Standards diese erfüllen sollten.

Wie der Name andeutet, ist CPython in C (und Python selbst) geschrieben. Das mag verwirrend klingen.

Frage

Wenn eine Sprache wie Python eine Implementierung wie CPython benötigt, die wiederum in einer anderen Sprache wie C geschrieben ist: Wie kann es dann jemals ausführbaren Code geben?

../../_images/funny-image-cpython.png

Abb. 3.5 Wer kompiliert den C-Code von CPython?#

Kurz gesagt: CPython ist Quellcode (vor allem in C), der mit einem C-Compiler in Maschinencode übersetzt wird. Dieser C-Compiler ist Teil Ihrer System-Toolchain (und wurde wiederum irgendwann mit einem anderen Compiler gebaut – das nennt man Bootstrapping).

Die (C)Python Standard Library besteht aus built-in Modulen, die in C geschrieben sind, und Modulen, die wiederum in Python selbst geschrieben sind. Der C-Code liegt nach dem Übersetzen als Maschinencode vor; der Python-Anteil bleibt Quelltext und wird vom Interpreter ausgeführt.

Verschiedene Python-Versionen

Zusätzlich dazu gibt es verschiedene Python-Versionen, die sich in Syntax und Funktionalität unterscheiden können. In der Praxis ist heute fast immer Python 3 relevant; Python 2 ist seit Jahren End-of-Life und sollte nicht mehr verwendet werden.

Auch innerhalb von Python 3 kann es Unterschiede geben (z. B. neue Sprachfeatures oder Änderungen in der Standardbibliothek). In der Regel sind das aber kleinere, evolutionäre Änderungen zwischen den 3.x-Versionen.

Ein kleines Beispiel für eine (historische) Syntax‑Änderung:

# Python 2 (historisch):
print "Hallo"

# Python 3:
print("Hallo")

Wenn Sie mit anderen zusammenarbeiten, lohnt es sich daher, kurz zu klären, welche Python‑Version (und ggf. welche Distribution/Umgebung) verwendet wird.

In diesem interaktiven Notebook können Sie die Version direkt abfragen:

import sys

print("Python-Version:", sys.version)
print("Interpreter:", sys.executable)

Klarstellung

  • Die Aussage, dass es mehrere Python-Implementierungen und -Versionen gibt, ist korrekt.

  • Die Referenzimplementierung von Python (CPython) ist in der Programmiersprache C geschrieben.

Tipps

  • Wenn Sie über verschiedene Betriebssysteme und Plattformen hinweg mit anderen arbeiten, fragen Sie im Zweifel nach, welches Python (Implementierung + Version) verwendet wird. Es kann kleine Unterschiede geben (z. B. unterstützte Pakete, Performance, Details der Laufzeit).

  • Sie können sich den Bytecode anzeigen lassen und analysieren. Wie genau erfahren Sie im Expertenwissen unter Analyse von Bytecode.

  • Da CPython in C/C++ geschrieben ist, können Sie auch direkt C-Code in Python hinterlegen. Mehr dazu im Expertenwissen unter CPython erweitern.