Allgemeine Python-FAQ¶
Allgemeine Informationen¶
Was ist Python?¶
Python ist eine interpretierte, interaktive, objektorientierte Programmiersprache. Sie bringt Module, Ausnahmen, dynamische Typisierung, sehr hohe dynamische Datentypen und Klassen mit. Sie unterstützt über die objektorientierte Programmierung hinaus mehrere Programmierparadigmen, etwa prozedurale und funktionale Programmierung. Python verbindet bemerkenswerte Mächtigkeit mit sehr klarer Syntax. Sie hat Schnittstellen zu vielen Systemaufrufen und Bibliotheken sowie zu verschiedenen Fenstersystemen und ist in C oder C++ erweiterbar. Sie lässt sich außerdem als Erweiterungssprache für Anwendungen verwenden, die eine programmierbare Schnittstelle brauchen. Und schließlich ist Python portabel: Es läuft auf vielen Unix-Varianten einschließlich Linux und macOS sowie unter Windows.
Um mehr zu erfahren, beginne mit Das Python-Tutorial. Der Beginner’s Guide to Python verlinkt weitere einführende Tutorials und Materialien zum Erlernen von Python.
Was ist die Python Software Foundation?¶
Die Python Software Foundation ist eine unabhängige gemeinnützige Organisation, die das Urheberrecht an den Python-Versionen 2.1 und neuer hält. Die Aufgabe der PSF ist es, Open-Source-Technologie rund um die Programmiersprache Python voranzubringen und die Verwendung von Python bekannt zu machen. Die Startseite der PSF ist https://www.python.org/psf/.
Spenden an die PSF sind in den USA steuerbefreit. Wenn du Python verwendest und es hilfreich findest, spende bitte über die Spendenseite der PSF.
Gibt es urheberrechtliche Einschränkungen bei der Verwendung von Python?¶
Du kannst mit dem Quellcode alles machen, was du willst, solange du die Urheberrechtshinweise darin lässt und sie in jeder Dokumentation zu Python anzeigst, die du erstellst. Hältst du die Regeln des Urheberrechts ein, ist es in Ordnung, Python kommerziell zu nutzen, Kopien von Python als Quellcode oder in binärer Form zu verkaufen (verändert oder unverändert) oder Produkte zu verkaufen, die Python in irgendeiner Form enthalten. Wir würden natürlich trotzdem gern von jeder kommerziellen Nutzung von Python erfahren.
Weitere Erläuterungen und den vollständigen Text der PSF-Lizenz findest du auf der Lizenzseite.
Das Python-Logo ist als Marke geschützt, und in bestimmten Fällen ist für seine Verwendung eine Erlaubnis nötig. Weitere Informationen stehen in der Trademark Usage Policy.
Warum wurde Python überhaupt geschaffen?¶
Hier eine sehr knappe Zusammenfassung dessen, was alles ins Rollen brachte, geschrieben von Guido van Rossum:
Ich hatte umfangreiche Erfahrung damit, in der ABC-Gruppe am CWI eine interpretierte Sprache umzusetzen, und aus der Arbeit mit dieser Gruppe hatte ich viel über Sprachentwurf gelernt. Das ist der Ursprung vieler Eigenschaften von Python, darunter die Einrückung zur Gruppierung von Anweisungen und die Aufnahme sehr hoher Datentypen, auch wenn die Einzelheiten in Python alle anders sind.
Ich hatte eine Reihe von Beschwerden über die Sprache ABC, mochte aber auch viele ihrer Eigenschaften. Es war unmöglich, die Sprache ABC (oder ihre Umsetzung) zu erweitern, um meine Kritikpunkte zu beheben – tatsächlich war ihre fehlende Erweiterbarkeit eines ihrer größten Probleme. Ich hatte etwas Erfahrung mit Modula-2+, sprach mit den Entwerfern von Modula-3 und las den Modula-3-Bericht. Modula-3 ist der Ursprung der Syntax und Semantik, die für Ausnahmen verwendet werden, sowie einiger weiterer Eigenschaften von Python.
Ich arbeitete am CWI in der Gruppe für das verteilte Betriebssystem Amoeba. Wir brauchten einen besseren Weg für die Systemverwaltung, als C-Programme oder Bourne-Shell-Skripte zu schreiben, denn Amoeba hatte seine eigene Schnittstelle für Systemaufrufe, die aus der Bourne-Shell nicht leicht zugänglich war. Meine Erfahrung mit der Fehlerbehandlung in Amoeba machte mir die Bedeutung von Ausnahmen als Sprachmittel sehr deutlich.
Mir kam der Gedanke, dass eine Skriptsprache mit einer Syntax wie ABC, aber mit Zugriff auf die Systemaufrufe von Amoeba den Bedarf decken würde. Mir war klar, dass es unklug wäre, eine Amoeba-spezifische Sprache zu schreiben, also entschied ich, dass ich eine allgemein erweiterbare Sprache brauchte.
In den Weihnachtsferien 1989 hatte ich viel Zeit und entschied mich deshalb, es zu versuchen. Im Laufe des folgenden Jahres, während ich noch überwiegend in meiner Freizeit daran arbeitete, wurde Python mit wachsendem Erfolg im Amoeba-Projekt eingesetzt, und die Rückmeldungen von Kollegen brachten mich dazu, viele frühe Verbesserungen einzubauen.
Im Februar 1991, nach knapp über einem Jahr Entwicklung, entschied ich mich, in den USENET zu posten. Der Rest steht in der Datei
Misc/HISTORY.
Wofür ist Python gut?¶
Python ist eine höhere Allzweck-Programmiersprache, die sich auf viele verschiedene Klassen von Problemen anwenden lässt.
Die Sprache bringt eine große Standardbibliothek mit, die Bereiche abdeckt wie Zeichenkettenverarbeitung (reguläre Ausdrücke, Unicode, Unterschiede zwischen Dateien berechnen), Internetprotokolle (HTTP, FTP, SMTP, XML-RPC, POP, IMAP), Softwaretechnik (Modultests, Protokollierung, Profiling, Python-Code zerlegen) und Schnittstellen zum Betriebssystem (Systemaufrufe, Dateisysteme, TCP/IP-Sockets). Sieh dir das Inhaltsverzeichnis von The Python standard library an, um einen Eindruck davon zu bekommen, was verfügbar ist. Außerdem gibt es eine große Vielfalt an Erweiterungen von Dritten. Pakete, die für dich interessant sind, findest du im Python Package Index.
Wie funktioniert das Schema der Versionsnummern von Python?¶
Python-Versionen werden mit „A.B.C“ oder „A.B“ durchnummeriert:
A ist die Hauptversionsnummer – sie wird nur bei wirklich großen Änderungen an der Sprache erhöht.
B ist die Nebenversionsnummer – sie wird bei weniger umwälzenden Änderungen erhöht.
C ist die Mikroversionsnummer – sie wird bei jeder Fehlerbehebungsveröffentlichung erhöht.
Nicht alle Veröffentlichungen beheben nur Fehler. Im Vorlauf zu einer neuen Funktionsveröffentlichung erscheint eine Reihe von Entwicklungsveröffentlichungen, bezeichnet als Alpha, Beta oder Release Candidate. Alphas sind frühe Veröffentlichungen, in denen die Schnittstellen noch nicht endgültig sind. Es ist nicht überraschend, wenn sich eine Schnittstelle zwischen zwei Alphas ändert. Betas sind stabiler, erhalten bestehende Schnittstellen, können aber noch neue Module hinzufügen, und Release Candidates sind eingefroren und werden nur noch geändert, soweit es zur Behebung kritischer Fehler nötig ist.
Alpha-, Beta- und Release-Candidate-Versionen haben eine zusätzliche Endung:
Die Endung einer Alpha-Version ist „aN“ für eine kleine Zahl N.
Die Endung einer Beta-Version ist „bN“ für eine kleine Zahl N.
Die Endung einer Release-Candidate-Version ist „rcN“ für eine kleine Zahl N.
Mit anderen Worten: Alle Versionen mit der Bezeichnung 2.0aN kommen vor denen mit 2.0bN, diese kommen vor denen mit 2.0rcN, und diese kommen vor 2.0.
Du findest vielleicht auch Versionsnummern mit der Endung „+dev“, etwa „3.15.0b3+dev“. Das sind unveröffentlichte Versionen, direkt aus dem Entwicklungsrepository von CPython gebaut. Nachdem die erste Beta-Veröffentlichung erschienen ist, wird die Version auf die nächste Funktionsversion erhöht, die damit zur „a0“-Version wird, etwa „3.16.0a0“.
Weitere Informationen zum Entwicklungszyklus stehen im Developer’s Guide, und PEP 387 erklärt die Politik von Python zur Rückwärtskompatibilität. Siehe auch die Dokumentation zu sys.version, sys.hexversion und sys.version_info.
Wie komme ich an eine Kopie des Python-Quellcodes?¶
Die neueste Quellcode-Distribution von Python ist immer über python.org verfügbar, unter https://www.python.org/downloads/. Der neueste Entwicklungsquellcode ist unter https://github.com/python/cpython/ zu bekommen.
Die Quellcode-Distribution ist eine gzip-komprimierte tar-Datei, die den vollständigen C-Quellcode, die Dokumentation im Sphinx-Format, die Module der Python-Bibliothek, Beispielprogramme und mehrere nützliche Stücke frei verteilbarer Software enthält. Der Quellcode lässt sich auf den meisten UNIX-Plattformen unverändert kompilieren und ausführen.
Weitere Informationen dazu, wie du an den Quellcode kommst und ihn kompilierst, stehen im Abschnitt „Getting Started“ des Python Developer’s Guide.
Wie komme ich an Dokumentation zu Python?¶
Die Standarddokumentation für die aktuelle stabile Version von Python ist unter https://docs.python.org/3/ verfügbar. Fassungen als EPUB, reiner Text und herunterladbares HTML stehen außerdem unter https://docs.python.org/3/download.html bereit.
Die Dokumentation ist in reStructuredText geschrieben und wird mit dem Dokumentationswerkzeug Sphinx verarbeitet. Der reStructuredText-Quellcode der Dokumentation ist Teil der Quellcode-Distribution von Python.
Ich habe noch nie programmiert. Gibt es ein Python-Tutorial?¶
Es gibt zahlreiche Tutorials und Bücher. Die Standarddokumentation enthält Das Python-Tutorial.
Informationen für Python-Anfänger, darunter Listen von Tutorials, findest du im Beginner’s Guide.
Gibt es eine Newsgroup oder Mailingliste zu Python?¶
Es gibt eine Newsgroup, comp.lang.python, und eine Mailingliste, python-list. Newsgroup und Mailingliste sind gegenseitig verbunden – wenn du News lesen kannst, musst du die Mailingliste nicht abonnieren. comp.lang.python hat hohes Verkehrsaufkommen mit hunderten Beiträgen täglich, und Usenet-Leseprogramme kommen mit dieser Menge oft besser zurecht.
Ankündigungen neuer Softwareveröffentlichungen und von Veranstaltungen finden sich in comp.lang.python.announce, einer moderierten Liste mit geringem Verkehrsaufkommen, die etwa fünf Beiträge pro Tag erhält. Sie ist als Mailingliste python-announce verfügbar.
Weitere Informationen zu anderen Mailinglisten und Newsgroups stehen unter https://www.python.org/community/lists/.
Wie bekomme ich eine Beta-Testversion von Python?¶
Alpha- und Beta-Veröffentlichungen sind unter https://www.python.org/downloads/ verfügbar. Alle Veröffentlichungen werden in den Newsgroups comp.lang.python und comp.lang.python.announce sowie auf der Python-Startseite unter https://www.python.org/ angekündigt. Ein RSS-Feed der Nachrichten ist verfügbar.
Du kannst auch über Git auf die Entwicklungsversion von Python zugreifen. Einzelheiten stehen im Python Developer’s Guide.
Wie reiche ich Fehlerberichte und Patches für Python ein?¶
Um einen Fehler zu melden oder einen Patch einzureichen, verwende die Fehlerverwaltung unter https://github.com/python/cpython/issues.
Weitere Informationen dazu, wie Python entwickelt wird, stehen im Python Developer’s Guide.
Gibt es veröffentlichte Artikel über Python, die ich zitieren kann?¶
Am besten zitierst du wahrscheinlich dein Lieblingsbuch über Python.
Der allererste Artikel über Python wurde 1991 geschrieben und ist inzwischen recht veraltet.
Guido van Rossum und Jelke de Boer, „Interactively Testing Remote Servers Using the Python Programming Language“, CWI Quarterly, Band 4, Ausgabe 4 (Dezember 1991), Amsterdam, S. 283–303.
Gibt es Bücher über Python?¶
Ja, es gibt viele, und es werden weitere veröffentlicht. Eine Liste findest du im Wiki von python.org unter https://wiki.python.org/moin/PythonBooks.
Du kannst auch in Online-Buchhandlungen nach „Python“ suchen und die Verweise auf Monty Python herausfiltern. Oder du suchst nach „Python“ und „language“.
Wo auf der Welt steht www.python.org?¶
Die Infrastruktur des Python-Projekts ist über die ganze Welt verteilt und wird vom Python Infrastructure Team betreut. Einzelheiten hier.
Warum heißt es Python?¶
Als er mit der Umsetzung von Python begann, las Guido van Rossum gerade die veröffentlichten Drehbücher von „Monty Python’s Flying Circus“, einer BBC-Comedyserie aus den 1970er Jahren. Van Rossum fand, er brauche einen Namen, der kurz, einzigartig und etwas geheimnisvoll ist, und beschloss deshalb, die Sprache Python zu nennen.
Muss ich „Monty Python’s Flying Circus“ mögen?¶
Nein, aber es hilft. :)
Python in der Praxis¶
Wie stabil ist Python?¶
Sehr stabil. Seit 1991 erscheinen etwa alle 6 bis 18 Monate neue, stabile Veröffentlichungen, und das wird sich wohl fortsetzen. Ab Version 3.9 gibt es alle 12 Monate eine neue Funktionsveröffentlichung (PEP 602).
Die Entwickler geben Fehlerbehebungsveröffentlichungen älterer Versionen heraus, wodurch sich die Stabilität bestehender Veröffentlichungen allmählich verbessert. Fehlerbehebungsveröffentlichungen, erkennbar an einem dritten Bestandteil der Versionsnummer (etwa 3.5.3, 3.6.2), werden auf Stabilität hin betreut. In eine solche Veröffentlichung gehen nur Korrekturen bekannter Probleme ein, und es ist garantiert, dass die Schnittstellen über eine ganze Reihe solcher Veröffentlichungen hinweg gleich bleiben.
Die neuesten stabilen Veröffentlichungen stehen immer auf der Python-Downloadseite. Python 3.x ist die empfohlene Version und wird von den meisten verbreiteten Bibliotheken unterstützt. Python 2.x wird nicht mehr gepflegt.
Wie viele Leute verwenden Python?¶
Es sind wahrscheinlich Millionen von Nutzern, eine genaue Zahl ist aber schwer zu bekommen.
Python lässt sich kostenlos herunterladen, es gibt also keine Verkaufszahlen, und es ist über viele verschiedene Seiten verfügbar und bei vielen Linux-Distributionen mit dabei, weshalb auch Download-Statistiken nicht die ganze Geschichte erzählen.
Die Newsgroup comp.lang.python ist sehr lebhaft, aber nicht alle Python-Nutzer schreiben dort oder lesen sie überhaupt.
Sind in Python schon bedeutende Projekte umgesetzt worden?¶
Eine Liste von Projekten, die Python verwenden, steht unter https://www.python.org/about/success. Ein Blick in die Berichte früherer Python-Konferenzen zeigt Beiträge aus vielen verschiedenen Unternehmen und Organisationen.
Zu den bekannten Python-Projekten gehören die Mailinglistenverwaltung Mailman und der Anwendungsserver Zope. Mehrere Linux-Distributionen, besonders Red Hat, haben ihr Installations- und Systemverwaltungsprogramm ganz oder teilweise in Python geschrieben. Zu den Unternehmen, die Python intern verwenden, gehören Google, Yahoo und Lucasfilm Ltd.
Welche neuen Entwicklungen sind für Python in der Zukunft zu erwarten?¶
Die Python Enhancement Proposals (PEPs) stehen unter https://peps.python.org/. PEPs sind Entwurfsdokumente, die eine vorgeschlagene neue Eigenschaft für Python beschreiben und eine knappe technische Spezifikation samt Begründung liefern. Halte Ausschau nach einem PEP mit dem Titel „Python X.Y Release Schedule“, wobei X.Y eine Version ist, die noch nicht veröffentlicht wurde.
Neue Entwicklungen werden auf der Mailingliste python-dev erörtert.
Ist es sinnvoll, inkompatible Änderungen an Python vorzuschlagen?¶
Im Allgemeinen nicht. Es gibt weltweit schon Millionen Zeilen Python-Code, deshalb ist jede Änderung an der Sprache abzulehnen, die mehr als einen sehr kleinen Bruchteil bestehender Programme ungültig macht. Selbst wenn du ein Umwandlungsprogramm bereitstellen kannst, bleibt das Problem, die ganze Dokumentation zu aktualisieren. Es sind viele Bücher über Python geschrieben worden, und wir wollen sie nicht alle mit einem Schlag ungültig machen.
Muss eine Eigenschaft geändert werden, ist ein stufenweiser Übergangsweg nötig. PEP 5 beschreibt das Verfahren, dem beim Einführen rückwärtsinkompatibler Änderungen gefolgt wird, um die Störungen für die Nutzer so gering wie möglich zu halten.
Ist Python eine gute Sprache für Programmieranfänger?¶
Ja.
Es ist noch üblich, Studierende mit einer prozeduralen und statisch typisierten Sprache wie Pascal, C oder einer Teilmenge von C++ oder Java beginnen zu lassen. Den Studierenden ist vielleicht besser gedient, wenn sie Python als erste Sprache lernen. Python hat eine sehr einfache und einheitliche Syntax sowie eine große Standardbibliothek, und am wichtigsten: Python in einem Einstiegskurs zu verwenden erlaubt den Studierenden, sich auf wichtige Programmierfähigkeiten zu konzentrieren, etwa das Zerlegen von Problemen und den Entwurf von Datentypen. Mit Python lassen sich Studierende schnell an grundlegende Begriffe wie Schleifen und Prozeduren heranführen. Wahrscheinlich können sie schon in ihrem allerersten Kurs mit selbst definierten Objekten arbeiten.
Für Studierende, die noch nie programmiert haben, wirkt eine statisch typisierte Sprache unnatürlich. Sie bringt zusätzliche Komplexität mit, die die Studierenden beherrschen müssen, und bremst das Tempo des Kurses. Die Studierenden versuchen zu lernen, wie ein Computer zu denken, Probleme zu zerlegen, einheitliche Schnittstellen zu entwerfen und Daten zu kapseln. Eine statisch typisierte Sprache zu lernen ist langfristig wichtig, aber nicht unbedingt das beste Thema für den ersten Programmierkurs der Studierenden.
Viele weitere Eigenschaften von Python machen es zu einer guten ersten Sprache. Wie Java hat Python eine große Standardbibliothek, sodass den Studierenden schon sehr früh im Kurs Programmierprojekte gestellt werden können, die etwas tun. Die Aufgaben sind nicht auf den üblichen Taschenrechner mit vier Funktionen und auf Programme zur Kontoführung beschränkt. Indem sie die Standardbibliothek verwenden, können die Studierenden die Genugtuung erleben, an realistischen Anwendungen zu arbeiten, während sie die Grundlagen des Programmierens lernen. Die Standardbibliothek zu verwenden lehrt die Studierenden außerdem etwas über Wiederverwendung von Code. Module von Dritten wie PyGame helfen ebenfalls dabei, die Möglichkeiten der Studierenden zu erweitern.
Der interaktive Interpreter von Python erlaubt den Studierenden, Sprachmittel beim Programmieren auszuprobieren. Sie können ein Fenster mit dem laufenden Interpreter offen halten, während sie den Quellcode ihres Programms in einem anderen Fenster eingeben. Wenn sie sich an die Methoden einer Liste nicht erinnern, können sie etwa dies tun:
>>> L = []
>>> dir(L)
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__',
'__dir__', '__doc__', '__eq__', '__format__', '__ge__',
'__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__',
'__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__',
'__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__',
'__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__',
'__sizeof__', '__str__', '__subclasshook__', 'append', 'clear',
'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove',
'reverse', 'sort']
>>> [d for d in dir(L) if '__' not in d]
['append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
>>> help(L.append)
Help on built-in function append:
append(...)
L.append(object) -> None -- append object to end
>>> L.append(1)
>>> L
[1]
Mit dem Interpreter ist die Dokumentation beim Programmieren nie weit von den Studierenden entfernt.
Es gibt für Python auch gute IDEs. IDLE ist eine plattformübergreifende IDE für Python, die in Python mit Tkinter geschrieben ist. Emacs-Nutzer wird freuen, dass es einen sehr guten Python-Modus für Emacs gibt. Alle diese Programmierumgebungen bieten Syntaxhervorhebung, automatisches Einrücken und Zugriff auf den interaktiven Interpreter während des Programmierens. Eine vollständige Liste der Python-Bearbeitungsumgebungen steht im Python-Wiki.
Wenn du über den Einsatz von Python in der Bildung sprechen willst, interessiert dich vielleicht die Mailingliste edu-sig.