Als einsteigerfreundliche Universalsprache trat Python ursprünglich im universitären Umfeld an. Heute hat es sich ein breites Einsatzspektrum erobert, das von Embedded Devices bis zu Deep Learning reicht.
Die Programmiersprache Python feiert 2021 zwei runde Geburtstage: Vor 30 Jahren veröffentlichte Guido van Rossum die Version 1.0 von Python, und zehn Jahre später wurde die Python Software Foundation gegründet, die sich seitdem um die Sprache bemüht.
Guido van Rossum hatte Python ursprünglich am Centrum Wiskunde & Informatica in Amsterdam als Lehrsprache für Informatikstudenten entwickelt. Sie sollte eine besonders leicht zu erlernende Allzwecksprache (General Purpose Language) sein, weshalb der Entwickler sie mit einem überschaubaren Befehlssatz und einer Syntax ausstattete, die besondere Übersichtlichkeit gewährleistet. So arbeitet Python nicht, wie viele andere Sprachen, mit Klammern zur syntaktischen Strukturierung des Codes, sondern mit Einrückungen (Listing 1).
Listing 1
Einrückungen
def factorial(x):
if x <= 1:
return 1
return x * factorial(x - 1)
Die Syntax der Sprache erzwingt damit einen einheitlichen Formatierungsstil, der das Lesen von Code erleichtert. Programmcode lässt sich zudem in Python oft viel knapper formulieren als in anderen Sprachen. Aufgaben, die in anderen Sprachen mehrere Zeilen Code benötigen, lassen sich in Python häufig mit einer Zeile erledigen, wie das Beispiel »print(“Hello world”)« zeigt.
Einfach universell
Die klare und einfache Syntax der Sprache trug wesentlich zu ihrem Erfolg bei, denn die Vorteile von schlankem Code liegen auf der Hand: Eine kleine Codebasis beschleunigt die Entwicklung komplexer Systeme und kommt auch der Wartung zugute. Neue Entwickler, die Code von ihren Vorgängern übernehmen, können sich sehr viel schneller einarbeiten. Jede Zeile Code, die wegfällt, vermeidet auch eine mögliche Fehlerquelle.
Entwickler können sich in Python verschiedener Programmierparadigmen bedienen. Die Multiparadigmensprache unterstützt generell die objektorientierte und strukturierte Programmierung. Einzelne Sprachelemente ermöglichen aber auch die aspektorientierte und funktionale Programmierung von Software.
Python ist eine Programmiersprache mit dynamischer Typisierung (Listing 2), eine statische Typprüfung gibt es nicht. Allerdings stellt Python seit der Version 3.5 optionale Typannotationen zur Verfügung, die eine statische Typprüfung durch externe Software möglich machen.
Listing 2
Dynamische Typisierung
>>> a ="Hello world!" >>> b = 42 >>> type(a) <type 'str'> >>> type(b) <type 'int'>
Zu den größten Vorteilen von Python zählt die umfangreiche Standardbibliothek. Sie stellt zahlreiche Funktionen und Schnittstellen zur Verfügung, mit denen sich in kurzer Zeit komplexe Programme entwickeln lassen. Die Standardbibliothek wird durch Pakete mit zusätzlichen Funktionsmodulen erweitert, die sich über einen eigenen Paketmanager verteilen und installieren lassen.
Diese Designprinzipien haben das ursprünglich für die Lehre entwickelte Python zu einer Sprache gemacht, die besonders solche Anwender gern einsetzen, die zwar Experten auf ihrem jeweiligen Gebiet sind, aber keine professionellen Softwareentwickler. So hat Python die Grenze zwischen den Entwicklern von Softwaresystemen und den Anwendern verwischt. Wissenschaftler, Ingenieure und Experten aus den unterschiedlichsten Fachgebieten können trotz begrenzter Programmiererfahrung mit Python schwierige Aufgaben lösen. Einen Überblick über die zahllosen Einsatzmöglichkeiten von Python gibt eine Broschüre [1], die die Python Software Foundation im Jahr 2014 veröffentlicht hat.
Zen of Python
Tim Peters, der Python schon in den 90er-Jahren produktiv einsetzte, formulierte das bekannte Zen of Python, das die Designprinzipien der Sprache zu 19 Regeln verallgemeinert, die sich prinzipiell auf alle Bereiche der Softwareentwicklung anwenden lassen:
- Beautiful is better than ugly.
- Explicit is better than implicit.
- Simple is better than complex.
- Complex is better than complicated.
- Flat is better than nested.
- Sparse is better than dense.
- Readability counts.
- Special cases aren’t special enough to break the rules.
- Although practicality beats purity.
- Errors should never pass silently.
- Unless explicitly silenced.
- In the face of ambiguity, refuse the temptation to guess.
- There should be one – and preferably only one – obvious way to do it.
- Although that way may not be obvious at first unless you’re Dutch.
- Now is better than never.
- Although never is often better than right now.
- If the implementation is hard to explain, it’s a bad idea.
- If the implementation is easy to explain, it may be a good idea.
- Namespaces are one honking great idea – let’s do more of those!
Die Regeln befinden sich im Modul »this« der Standardbibliothek, sodass man sie im interaktiven Interpreter mit dem Befehl »import this« ausgeben kann.
Mit großer Community
Guido van Rossum legte nicht nur die Grundlagen für die Programmiersprache selbst, sondern brachte auch durch ein wegweisendes Steuerungsmodell ihre kontinuierliche Weiterentwicklung in geordnete Bahnen. Änderungsvorschläge durchlaufen einen mehrstufigen Abstimmungsprozess, der mit informellen Diskussionen beginnt und in eine formalisierte Prozedur mündet, an deren Ende der Vorschlag akzeptiert oder verworfen wird. Im Zentrum dieses Prozesses stehen die Python Enhancement Proposals (PEPs), Dokumente, die die Verbesserungsvorschläge selbst sowie deren Implementierung ausführlich beschreiben und begründen. Das Steuerungsmodell selbst wird im ersten PEP beschrieben [2].
Als Erfinder der Sprache besaß Guido van Rossum bis 2018 eine Art Vetorecht, durch das er Änderungen verhindern konnte, die in seinen Augen dem Charakter der Sprache geschadet hätten. Bis 2018 trug er den Titel eines Benevolent Dictator for Life (BDFL, wohlwollender Diktator auf Lebenszeit). Nach 2018 zog er sich nach längeren Auseinandersetzungen um die Einführung von Assignment Expressions [3] zurück und gab seinen Titel auf. Seitdem gibt es ein neues Steuerungsmodell, bei dem eine Steering Group der Kernentwickler gemeinsam mit der Community über die Weiterentwicklung der Sprache entscheidet. Die Programmiersprache Python wird also von ihren Anwendern selbst weiterentwickelt.
Die Python Software Foundation (PSF) erhält finanzielle Zuwendungen von Sponsoren und unterstützt die Community zum Beispiel über Stipendien und Infrastruktur [4]. Die Foundation veranstaltet jedes Jahr die PyCon US, eine große Konferenz für die Python-Community, die in Zeiten vor Corona als physisches Event in den USA oder in Kanada stattfand.
Python-Entwickler
Um greifbar zu machen, was die aufgrund ihrer Vielfalt und Größe schier unüberschaubare Community aus Python-Entwicklern bewegt, führt die PSF jedes Jahr eine Umfrage durch. Abbildung 1 zeigt die Resultate aus dem Jahr 2020 [5]. Wie nicht anders zu erwarten, schätzten die Befragten an der Sprache vor allem ihre Einfachheit und Benutzerfreundlichkeit. An neuen Funktionen wünschten sie sich am häufigsten statische Typisierung beziehungsweise striktes Type Hinting, gefolgt von Leistungsverbesserungen und nebenläufiger respektive paralleler Verarbeitung. Das in der Umfrage von immerhin 12 Prozent der Befragten gewünschte Pattern Matching wird in Python 3.10 eingeführt.
85 Prozent der Befragten verwenden Python als ihre Hauptprogrammiersprache. Javascript ist die Sprache, die am häufigsten in Verbindung mit Python benutzt wird. 75 Prozent der Befragten gaben an, sowohl Python als auch Javascript in ihrem Alltag zu verwenden. Die Anwender setzen Python am häufigsten zur Datenanalyse, zur Webentwicklung und zum maschinellen Lernen ein.
Der Wechsel von Python 2 zu Python 3, der aufgrund fehlender Rückwärtskompatibilität viele Jahre in Anspruch nahm, ist vollzogen. Der Anteil von Python-3-Code stieg im letzten Jahr von 75 auf 94 Prozent. Zu den bevorzugten Web-Frameworks gehören Flask [6], Django [7] und FastAPI [8], die am häufigsten verwendeten Data-Science-Bibliotheken sind NumPy [9], Pandas [10] und Matplotlib [11].
Python ist überall
Python dient oft als Skriptsprache zur Steuerung anderer Programme und zur Systemintegration. Viele Softwaresysteme, die in anderen Sprachen programmiert wurden, besitzen ein Python-API zur Automatisierung oder Funktionserweiterung. Ein bekanntes Beispiel im Open-Source-Umfeld ist das 3D-Animationsprogramm Blender [12].
Python spielt auch direkt mit anderen Programmiersprachen zusammen wie C (C API [13], Cython [14], Ctypes [15], Cf [16]), C++ (Boost.Python [17]), Fortran (F2PY [18]) und Rust (Rust-Cpython [19]).
Die Sprache ist in allen gängigen Betriebssystemen verfügbar. In vielen Linux-Distributionen und auf Apple-Rechnern dient Python sogar als Systemkomponente zum Beispiel für das Paketmanagement. Auf großen HPC-Clustern spielt es ebenso eine zentrale Rolle wie auf vielen kleinen IoT-Boards. Es gibt kaum einen Bereich der Informatik, in dem Python außen vor bleibt.
Flugversuch auf dem Mars
Dass Python mit herausragenden Fähigkeiten aufwarten kann, zeigt sich beispielsweise daran, dass der Code des Mars-Helikopters [20] Ingenuity (Abbildung 2) auf dem in Python verfassten NASA-Framework F Prime [21] aufsetzt.

Abbildung 2: Der Mars-Helikopter Ingenuity unternahm im April 2021 auf dem roten Planeten erste Flugversuche. Quelle: ASA/JPL-Caltech
Bei F Prime handelt es sich um ein komponentenbasiertes Framework für die Entwicklung sogenannter Embedded Software. Es wurde ursprünglich vom NASA Jet Propulsion Laboratory entwickelt und kommt in verschiedenen Raumfahrtanwendungen zum Einsatz. Die quelloffene Software läuft auf verschiedenen Plattformen und lässt sich mithilfe von Cmake, Git und Python 3.5 ausprobieren (Listing 3). Dabei untergliedert sich das Framework klar in Komponenten: Die Kernfunktionen wie Message Queues und Threads sind größtenteils in C++ geschrieben, das Testing mit Unit- und Integration-Tests besteht jedoch im Wesentlichen aus Python-Code.
Listing 3
F Prime installieren
$ git clone https://github.com/nasa/fprime.git $ cd fprime $ pip install --upgrade wheel setuptools pip $ pip install Fw/Python Gds/
Data Science und Python
Dank seiner Benutzerfreundlichkeit findet sich Python sogar in vielen Bereichen, für die es auf den ersten Blick nicht gut geeignet erscheint. Dazu gehören vor allem rechenintensive Anwendungsfelder wie Big Data und Machine Learning, in denen man intuitiv besonders schnelle Programmiersprachen erwartet, zu denen interpretierte Sprachen nicht gehören. Doch für Datenwissenschaftler ist die Arbeit an den Algorithmen selbst sehr viel wichtiger als die Maschinenoptimierung bei der Ausführung eines Programms. Letzteres lässt sich ohnehin problemlos über spezielle Bibliotheken erreichen, die die rechenintensivsten Aufgaben beim Data Mining oder Machine Learning übernehmen.
Im Jahr 2001 entwickelte Fernando Pérez IPython, einen interaktiven Kommandozeileninterpreter für Python mit Notebook-Funktion. Durch die Integration von Matplotlib kurz danach entwickelte sich daraus ein Werkzeug zur interaktiven Visualisierung von mathematischen Formeln und Daten. Aus IPython entstand schließlich das Jupyter-Projekt, ein sprachunabhängiges Notebook für verschiedene Sprachen wie Julia, R, Haskell und Ruby, wobei Python immer noch den Schwerpunkt bildet (Abbildung 3).
Jupyter-Notebooks dienen zur interaktiven wissenschaftlichen Datenauswertung beziehungsweise zu wissenschaftlichen Berechnungen. Sie haben sich in kurzer Zeit zum De-facto-Standard für schnelles Prototyping und explorative Analysen in den unterschiedlichsten Fachgebieten entwickelt (Abbildung 4). Sie beflügeln nicht nur Experimente und Innovationen, sondern machen auch den gesamten Forschungsprozess schneller und zuverlässiger, da die Notebooks neben dem wissenschaftlichen Text auch die Daten enthalten, auf denen der Text basiert. Inspiriert wurde das Jupyter-Projekt von der Software Mathematica [22] und dem Gedanken des Literate Programmings [23], den der Informatiker Donald Knuth in den 1980er-Jahren entwickelt hat.

Abbildung 4: Die Nutzung von Jupyter-Notebooks allein auf Github hat in den letzten Jahren stark zugenommen.
Daten-Notebooks revolutionieren nicht nur das wissenschaftliche Arbeiten und die wissenschaftliche Publizistik im engeren Sinne, sie erweisen sich auch als wichtiges Werkzeug für den Datenjournalismus sowie die Open-Data- und Open-Science-Bewegung. Zu Beginn der Corona-Pandemie machte sich die Johns-Hopkins-Universität einen Namen, da sie als erste den Verlauf der Pandemie auf einer Website tagesaktuell visualisierte. Sie stützt sich dabei auf eine Software der US-Firma Esri, die in wesentlichen Teilen auf Python basiert [24].
Die EU-Kommission erkannte ebenfalls schnell das Potenzial der schnellen Analyse und Visualisierung von Daten mit Jupyter-Notebooks und rief das Projekt OSCOVIDA (Open Science COVID Analysis) ins Leben, das mithilfe von Jupyter-Notebooks das umfangreiche Datenmaterial des Infektionsgeschehens auswertet [25]. Auf der Website des Projekts kann man Analysen für jeden deutschen Landkreis einsehen (Abbildung 5).
Eine prominente Meinung zu Python
Dr. Sebastian Raschka, Assistenzprofessor für Statistik an der University of Wisconsin-Madison, USA, und Autor von “Machine Learning mit Python”, sagt über die Sprache das Folgende: “Es ist nun zehn Jahre her, seit ich meine ersten Schritte in Python machte. Als junger Wissenschaftler und Benutzer von R wollte ich damals eine zusätzliche Allzwecksprache für die Implementierung benutzerdefinierter Datenvorverarbeitungsskripte lernen. Dank Pythons klarer Syntax war es wirklich einfach, sofort loszulegen. Mithilfe einer tollen Python-Community konnte ich meine Skripte in kürzester Zeit zum Laufen bringen. Heute ist Python noch immer meine erste Anlaufstelle für die Automatisierung langwieriger Aufgaben. Darüber hinaus erfreut es mich als Forscher für Machine und Deep Learning zu sehen, wie sich Python in diesen Bereichen zur Lingua Franca entwickelte. Zwar ist einer von Pythons oft zitierten Mängeln seine relativ langsame Leistung für wissenschaftliche Arbeiten, doch überwinden die meisten Bibliotheken dieses Problem, indem sie optimierten C/C++- und CUDA-Code aufrufen. Dank der Benutzerfreundlichkeit von Python ist es eine absolute Freude, mit Bibliotheken für Machine und Deep Learning wie Scikit-learn und PyTorch zu arbeiten. Ein Jahrzehnt nach meinen ersten Schritten mit Python ist es sowohl die Bequemlichkeit als auch die großartige Community hinter Python, die ich noch heute sehr zu schätzen weiß”.
Fazit
Python ist eine leicht zu erlernende und leistungsfähige Programmiersprache, die sich bei Anwendern aus allen Fachgebieten größter Beliebtheit erfreut. Ihre Weiterentwicklung wird von einer gemeinnützigen Stiftung koordiniert. Python hat sich im Laufe seiner 30-jährigen Geschichte kontinuierlich neue Anwendungsfelder erobert und glänzt heute insbesondere in den Datenwissenschaften und im Machine Learning. Im professionellen Umfeld erweist sich Python als unentbehrliches Werkzeug für alle, die mit modernen IT-Systemen zu tun haben. (jcb/jlu)
Infos
- Broschüre zu den Einsatzmöglichkeiten: https://brochure.getpython.info
- Das erste PEP: https://www.python.org/dev/peps/pep-0001/
- Assignment Expressions: https://www.python.org/dev/peps/pep-0572
- Python Software Foundation: https://www.python.org/psf-landing
- Python Developers Survey 2020: https://www.jetbrains.com/lp/python-developers-survey-2020
- Flask: https://flask.palletsprojects.com
- Django: https://www.djangoproject.com
- FastAPI: https://fastapi.tiangolo.com
- NumPy: https://numpy.org
- Pandas: https://pandas.pydata.org
- Matplotlib: https://matplotlib.org
- Blender: https://www.blender.org
- C-API: https://docs.python.org/3/c-api
- Cython: https://cython.org
- Ctypes: https://docs.python.org/3/library/ctypes.html
- Cf: https://ncas-cms.github.io/cf-python
- Boost.Python: https://www.boost.org
- F2PY: https://numpy.org/doc/stable/f2py
- Rust-Cpython: https://docs.rs/cpython/0.5.2/cpython
- Mars-Helikopter: https://mars.nasa.gov/technology/helicopter
- F Prime: https://github.com/nasa/fprime
- Mathematica: https://de.wikipedia.org/wiki/Mathematica
- Literate Programming: http://www.literateprogramming.com
- “Accessing data sources in Python”: https://pro.arcgis.com/de/pro-app/2.6/arcpy/geoprocessing_and_python/data-sources-in-python.htm
- OSCOVIDA: https://oscovida.github.io









