Allgemeine Python FAQ

Allgemeine Informationen

Was ist Python?

Python ist eine interpretierte, interaktive, objektorientierte Programmiersprache. Sie integriert Module, Ausnahmen, dynamische Typisierung, sehr hochstufige dynamische Datentypen und Klassen. Sie unterstützt mehrere Programmierparadigmen über die objektorientierte Programmierung hinaus, wie z. B. prozedurale und funktionale Programmierung. Python kombiniert bemerkenswerte Leistungsfähigkeit mit sehr klarer Syntax. Es bietet Schnittstellen zu vielen Systemaufrufen und Bibliotheken sowie zu verschiedenen Fenstersystemen und ist in C oder C++ erweiterbar. Es kann auch als Erweiterungssprache für Anwendungen verwendet werden, die eine programmierbare Schnittstelle benötigen. Schließlich ist Python portabel: es läuft auf vielen Unix-Varianten, einschließlich Linux und macOS, sowie auf Windows.

Um mehr zu erfahren, beginnen Sie mit Das Python Tutorial. Der Einsteigerleitfaden für Python verlinkt auf weitere einführende Tutorials und Ressourcen 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 Python-Versionen 2.1 und neuer hält. Die Mission der PSF ist es, Open-Source-Technologie im Zusammenhang mit der Python-Programmiersprache zu fördern und die Nutzung von Python zu verbreiten. Die Homepage der PSF finden Sie unter https://pythonlang.de/psf/.

Spenden an die PSF sind in den USA steuerlich absetzbar. Wenn Sie Python nutzen und es hilfreich finden, unterstützen Sie uns bitte über die PSF-Spendenseite.

Warum wurde Python überhaupt erstellt?

Hier ist eine *sehr* kurze Zusammenfassung dessen, was alles begann, geschrieben von Guido van Rossum

Ich hatte umfangreiche Erfahrung mit der Implementierung einer interpretierten Sprache in der ABC-Gruppe am CWI und hatte durch die Arbeit mit dieser Gruppe viel über Sprachdesign gelernt. Dies ist der Ursprung vieler Python-Features, einschließlich der Verwendung von Einrückungen zur Gruppierung von Anweisungen und der Aufnahme von sehr hochstufigen Datentypen (obwohl die Details in Python alle anders sind).

Ich hatte eine Reihe von Beschwerden über die ABC-Sprache, mochte aber auch viele ihrer Funktionen. Es war unmöglich, die ABC-Sprache (oder ihre Implementierung) zu erweitern, um meine Beschwerden zu beheben – tatsächlich war ihre mangelnde Erweiterbarkeit eines ihrer größten Probleme. Ich hatte einige Erfahrung mit der Verwendung von Modula-2+ und sprach mit den Designern von Modula-3 und las den Modula-3-Bericht. Modula-3 ist der Ursprung der Syntax und Semantik, die für Ausnahmen und einige andere Python-Features verwendet werden.

Ich arbeitete in der Amoeba-Gruppe für verteilte Betriebssysteme am CWI. Wir brauchten eine bessere Möglichkeit zur Systemadministration als durch das Schreiben von C-Programmen oder Bourne-Shell-Skripten, da Amoeba eine eigene Systemaufrufschnittstelle hatte, die von der Bourne-Shell aus nicht leicht zugänglich war. Meine Erfahrung mit der Fehlerbehandlung in Amoeba machte mich akut auf die Bedeutung von Ausnahmen als Feature einer Programmiersprache aufmerksam.

Mir kam die Idee, dass eine Skriptsprache mit einer Syntax ähnlich wie ABC, aber mit Zugriff auf die Amoeba-Systemaufrufe, den Bedarf decken würde. Ich erkannte, dass es töricht wäre, eine Amoeba-spezifische Sprache zu schreiben, also beschloss ich, dass ich eine Sprache brauchte, die generell erweiterbar war.

Während der Weihnachtsferien 1989 hatte ich viel Zeit, also beschloss ich, es zu versuchen. Im Laufe des nächsten Jahres, während ich hauptsächlich noch in meiner Freizeit daran arbeitete, wurde Python mit zunehmendem Erfolg im Amoeba-Projekt eingesetzt, und das Feedback von Kollegen veranlasste mich, viele frühe Verbesserungen einzuführen.

Im Februar 1991, nach etwas mehr als einem Jahr Entwicklung, beschloss ich, auf USENET zu posten. Der Rest steht in der Datei Misc/HISTORY.

Wofür ist Python gut?

Python ist eine plattformunabhängige Allzweck-Programmiersprache, die für viele verschiedene Problemklassen angewendet werden kann.

Die Sprache kommt mit einer großen Standardbibliothek, die Bereiche wie Zeichenkettenverarbeitung (reguläre Ausdrücke, Unicode, Berechnung von Dateiunterschieden), Internetprotokolle (HTTP, FTP, SMTP, XML-RPC, POP, IMAP), Software-Engineering (Unit-Tests, Logging, Profiling, Parsen von Python-Code) und Betriebssystem-Schnittstellen (Systemaufrufe, Dateisysteme, TCP/IP-Sockets) abdeckt. Schauen Sie sich das Inhaltsverzeichnis von Die Python Standardbibliothek an, um eine Vorstellung davon zu bekommen, was verfügbar ist. Eine Vielzahl von Drittanbieter-Erweiterungen ist ebenfalls verfügbar. Konsultieren Sie den Python Package Index, um Pakete zu finden, die Sie interessieren.

Wie funktioniert das Versionsnummerierungsschema von Python?

Python-Versionen werden als „A.B.C“ oder „A.B“ nummeriert.

  • A ist die Hauptversionsnummer – sie wird nur für wirklich bedeutende Änderungen an der Sprache erhöht.

  • B ist die Nebenversionsnummer – sie wird für weniger einschneidende Änderungen erhöht.

  • C ist die Mikroversionsnummer – sie wird für jede Fehlerbehebungs-Veröffentlichung erhöht.

Nicht alle Veröffentlichungen sind Fehlerbehebungen. Im Vorfeld einer neuen Feature-Veröffentlichung wird eine Reihe von Entwicklungsversionen veröffentlicht, die als Alpha, Beta oder Release Candidate bezeichnet werden. Alphas sind frühe Veröffentlichungen, bei denen die Schnittstellen noch nicht finalisiert sind; es ist nicht ungewöhnlich, dass sich eine Schnittstelle zwischen zwei Alpha-Versionen ändert. Betas sind stabiler, behalten bestehende Schnittstellen bei, fügen aber möglicherweise neue Module hinzu, und Release Candidates sind eingefroren, wobei keine Änderungen vorgenommen werden, außer um kritische Fehler zu beheben.

Alpha-, Beta- und Release-Candidate-Versionen haben einen zusätzlichen Suffix

  • Der Suffix für eine Alpha-Version ist „aN“ für eine kleine Zahl N.

  • Der Suffix für eine Beta-Version ist „bN“ für eine kleine Zahl N.

  • Der Suffix für eine Release-Candidate-Version ist „rcN“ für eine kleine Zahl N.

Mit anderen Worten, alle Versionen, die als 2.0aN gekennzeichnet sind, gehen den Versionen 2.0bN voraus, die den Versionen 2.0rcN vorausgehen, und *diese* gehen der Version 2.0 voraus.

Sie können auch Versionsnummern mit einem „+“-Suffix finden, z. B. „2.2+“. Dies sind unveröffentlichte Versionen, die direkt aus dem CPython-Entwicklungsrepository erstellt wurden. In der Praxis wird nach der Veröffentlichung einer finalen Nebenversion die Versionsnummer auf die nächste Nebenversion erhöht, die zur „a0“-Version wird, z. B. „2.4a0“.

Siehe den Entwicklerleitfaden für weitere Informationen über den Entwicklungszyklus und PEP 387, um mehr über Pythons Rückwärtskompatibilitätsrichtlinie zu erfahren. Siehe auch die Dokumentation für sys.version, sys.hexversion und sys.version_info.

Wie erhalte ich eine Kopie des Python-Quellcodes?

Die neueste Python-Quellcode-Distribution ist immer auf python.org unter https://pythonlang.de/downloads/ verfügbar. Die neuesten Entwicklungscodes können unter https://github.com/python/cpython/ abgerufen werden.

Die Quellcode-Distribution ist eine gepackte Tar-Datei, die den vollständigen C-Quellcode, die in Sphinx formatierte Dokumentation, Python-Bibliotheksmodule, Beispielprogramme und mehrere nützliche frei verteilbare Softwareteile enthält. Der Quellcode wird auf den meisten UNIX-Plattformen sofort kompiliert und ausgeführt.

Konsultieren Sie den Abschnitt Erste Schritte des Python-Entwicklerhandbuchs für weitere Informationen über den Erhalt des Quellcodes und dessen Kompilierung.

Wie erhalte ich Dokumentation zu Python?

Die Standarddokumentation für die aktuelle stabile Version von Python ist unter https://docs.pythonlang.de/3/ verfügbar. PDF-, Nur-Text- und herunterladbare HTML-Versionen sind ebenfalls unter https://docs.pythonlang.de/3/download.html verfügbar.

Die Dokumentation ist in reStructuredText geschrieben und wird vom Sphinx-Dokumentationstool verarbeitet. Der reStructuredText-Quellcode für die Dokumentation ist Teil der Python-Quellcode-Distribution.

Ich habe noch nie programmiert. Gibt es ein Python-Tutorial?

Es gibt zahlreiche Tutorials und Bücher. Die Standarddokumentation enthält Das Python Tutorial.

Konsultieren Sie den Einsteigerleitfaden, um Informationen für Python-Anfänger zu finden, einschließlich Listen von Tutorials.

Gibt es eine Newsgroup oder Mailingliste, die sich Python widmet?

Es gibt eine Newsgroup, comp.lang.python, und eine Mailingliste, python-list. Die Newsgroup und die Mailingliste sind miteinander verbunden – wenn Sie Usenet lesen können, ist es nicht notwendig, sich für die Mailingliste anzumelden. comp.lang.python ist sehr aktiv und erhält täglich Hunderte von Beiträgen, und Usenet-Reader können dieses Volumen oft besser bewältigen.

Ankündigungen neuer Software-Veröffentlichungen und Veranstaltungen finden Sie in comp.lang.python.announce, einer moderierten Liste mit geringem Aufkommen, die etwa fünf Beiträge pro Tag erhält. Sie ist verfügbar als die python-announce Mailingliste.

Weitere Informationen zu anderen Mailinglisten und Newsgroups finden Sie unter https://pythonlang.de/community/lists/.

Wie erhalte ich eine Beta-Testversion von Python?

Alpha- und Beta-Versionen sind unter https://pythonlang.de/downloads/ erhältlich. Alle Veröffentlichungen werden in den Newsgroups comp.lang.python und comp.lang.python.announce sowie auf der Python-Homepage unter https://pythonlang.de/ angekündigt; ein RSS-Feed mit Neuigkeiten ist verfügbar.

Sie können auch die Entwicklungsversion von Python über Git abrufen. Details finden Sie im Python Developer’s Guide.

Wie reiche ich Fehlerberichte und Patches für Python ein?

Um einen Fehler zu melden oder einen Patch einzureichen, nutzen Sie den Issue Tracker unter https://github.com/python/cpython/issues.

Weitere Informationen zur Entwicklung von Python finden Sie im Python Developer’s Guide.

Gibt es veröffentlichte Artikel über Python, die ich zitieren kann?

Am besten zitieren Sie wahrscheinlich Ihr Lieblingsbuch über Python.

Der *allererste Artikel* über Python wurde 1991 geschrieben und ist inzwischen ziemlich veraltet: sehr erster Artikel.

Guido van Rossum und Jelke de Boer, „Interactively Testing Remote Servers Using the Python Programming Language“, CWI Quarterly, Volume 4, Issue 4 (Dezember 1991), Amsterdam, S. 283–303.

Gibt es Bücher über Python?

Ja, es gibt viele, und es werden immer mehr veröffentlicht. Auf der python.org-Wiki unter https://wiki.python.org/moin/PythonBooks finden Sie eine Liste.

Sie können auch Online-Buchhandlungen nach „Python“ durchsuchen und die Monty-Python-Referenzen herausfiltern; oder vielleicht nach „Python“ und „Sprache“ suchen.

Wo auf der Welt befindet sich www.python.org?

Die Infrastruktur des Python-Projekts ist weltweit verteilt und wird vom Python Infrastructure Team verwaltet. Details hier.

Warum heißt es Python?

Als er mit der Implementierung von Python begann, las Guido van Rossum auch die veröffentlichten Skripte von „Monty Python’s Flying Circus“, einer BBC-Comedy-Serie aus den 1970er Jahren. Van Rossum dachte, er brauche einen kurzen, einzigartigen und leicht geheimnisvollen Namen, also entschied er sich, die Sprache Python zu nennen.

Muss ich „Monty Python’s Flying Circus“ mögen?

Nein, aber es hilft. :)

Python in der realen Welt

Wie stabil ist Python?

Sehr stabil. Seit 1991 erscheinen etwa alle 6 bis 18 Monate neue, stabile Versionen, und dies wird sich wahrscheinlich fortsetzen. Ab Version 3.9 wird Python alle 12 Monate eine neue Feature-Veröffentlichung haben (PEP 602).

Die Entwickler veröffentlichen Fehlerbehebungs-Releases älterer Versionen, so dass die Stabilität bestehender Versionen allmählich zunimmt. Fehlerbehebungs-Releases, die durch eine dritte Komponente der Versionsnummer gekennzeichnet sind (z. B. 3.5.3, 3.6.2), werden im Hinblick auf die Stabilität verwaltet; nur Korrekturen für bekannte Probleme werden in einem Fehlerbehebungs-Release aufgenommen, und es ist garantiert, dass die Schnittstellen über eine Reihe von Fehlerbehebungs-Releases hinweg gleich bleiben.

Die neuesten stabilen Versionen finden Sie immer auf der Python-Downloadseite. Python 3.x ist die empfohlene Version und wird von den meisten weit verbreiteten Bibliotheken unterstützt. Python 2.x wird nicht mehr gewartet.

Wie viele Leute benutzen Python?

Es gibt wahrscheinlich Millionen von Nutzern, auch wenn es schwierig ist, eine genaue Zahl zu ermitteln.

Python ist kostenlos zum Download verfügbar, daher gibt es keine Verkaufszahlen, und es ist von vielen verschiedenen Websites erhältlich und mit vielen Linux-Distributionen gebündelt, sodass Download-Statistiken auch nicht alles erzählen.

Die Newsgroup comp.lang.python ist sehr aktiv, aber nicht alle Python-Nutzer posten in der Gruppe oder lesen sie überhaupt.

Wurden signifikante Projekte in Python realisiert?

Siehe https://pythonlang.de/about/success für eine Liste von Projekten, die Python verwenden. Die Konsultation der Proceedings von vergangenen Python-Konferenzen wird Beiträge von vielen verschiedenen Unternehmen und Organisationen offenbaren.

Bekannte Python-Projekte sind der Mailman Mailinglisten-Manager und der Zope-Anwendungsserver. Mehrere Linux-Distributionen, insbesondere Red Hat, haben Teile oder ihre gesamte Installations- und Systemadministrationssoftware in Python geschrieben. Zu den Unternehmen, die Python intern nutzen, gehören Google, Yahoo und Lucasfilm Ltd.

Welche neuen Entwicklungen sind für Python in Zukunft zu erwarten?

Siehe https://peps.pythonlang.de/ für die Python Enhancement Proposals (PEPs). PEPs sind Design-Dokumente, die eine vorgeschlagene neue Funktion für Python beschreiben und eine prägnante technische Spezifikation und Begründung liefern. Suchen Sie nach einem PEP mit dem Titel „Python X.Y Release Schedule“, wobei X.Y eine noch nicht öffentlich veröffentlichte Version ist.

Neue Entwicklungen werden auf der python-dev Mailingliste diskutiert.

Ist es sinnvoll, inkompatible Änderungen an Python vorzuschlagen?

Im Allgemeinen nein. Es gibt bereits Millionen von Zeilen Python-Code auf der ganzen Welt, daher muss jede Änderung an der Sprache, die mehr als einen sehr kleinen Teil bestehender Programme ungültig macht, missbilligt werden. Selbst wenn Sie ein Konvertierungsprogramm bereitstellen können, gibt es immer noch das Problem, die gesamte Dokumentation zu aktualisieren; viele Bücher wurden über Python geschrieben, und wir wollen sie nicht alle auf einmal ungültig machen.

Ein schrittweiser Upgrade-Pfad ist notwendig, wenn ein Feature geändert werden muss. PEP 5 beschreibt das Verfahren, das bei der Einführung rückwärtsinkompatibler Änderungen befolgt wird, um Störungen für Benutzer zu minimieren.

Ist Python eine gute Sprache für Anfänger?

Ja.

Es ist immer noch üblich, Studenten mit einer prozeduralen und statisch typisierten Sprache wie Pascal, C oder einer Untermenge von C++ oder Java zu beginnen. Studenten sind möglicherweise besser bedient, wenn sie Python als ihre erste Sprache lernen. Python hat eine sehr einfache und konsistente Syntax und eine große Standardbibliothek, und was am wichtigsten ist: die Verwendung von Python in einem Einführungskurs für Programmierung ermöglicht es den Studenten, sich auf wichtige Programmierfähigkeiten wie Problemd Zerlegung und Datentypdesign zu konzentrieren. Mit Python können Studenten schnell in grundlegende Konzepte wie Schleifen und Prozeduren eingeführt werden. Sie können wahrscheinlich sogar in ihrem allerersten Kurs mit benutzerdefinierten Objekten arbeiten.

Für einen Studenten, der noch nie programmiert hat, erscheint die Verwendung einer statisch typisierten Sprache unnatürlich. Sie stellt zusätzliche Komplexität dar, die der Student beherrschen muss, und verlangsamt das Tempo des Kurses. Die Studenten versuchen zu lernen, wie man wie ein Computer denkt, Probleme zerlegt, konsistente Schnittstellen entwirft und Daten kapselt. Obwohl das Erlernen einer statisch typisierten Sprache langfristig wichtig ist, ist sie nicht unbedingt das beste Thema für den ersten Programmierkurs der Studenten.

Viele andere Aspekte von Python machen es zu einer guten ersten Sprache. Wie Java verfügt Python über eine große Standardbibliothek, sodass Studenten bereits früh im Kurs Programmierprojekte zugewiesen werden können, die *etwas* tun. Die Aufgaben sind nicht auf den standardmäßigen vierstelligen Taschenrechner und Scheckkontoprogramme beschränkt. Durch die Verwendung der Standardbibliothek können die Studenten die Befriedigung erlangen, an realistischen Anwendungen zu arbeiten, während sie die Grundlagen der Programmierung erlernen. Die Verwendung der Standardbibliothek lehrt die Studenten auch den Code-Wiederverwendungsgedanken. Drittanbieter-Module wie PyGame sind ebenfalls hilfreich, um den Horizont der Studenten zu erweitern.

Pythons interaktiver Interpreter ermöglicht es den Studenten, Sprachfeatures zu testen, während sie programmieren. Sie können ein Fenster mit dem Interpreter geöffnet lassen, während sie den Quellcode ihres Programms in einem anderen Fenster eingeben. Wenn sie sich nicht an die Methoden einer Liste erinnern können, können sie etwas wie das hier 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 für den Studenten beim Programmieren nie weit entfernt.

Es gibt auch gute IDEs für Python. IDLE ist eine plattformübergreifende IDE für Python, die in Python mit Tkinter geschrieben ist. Emacs-Benutzer werden sich freuen zu wissen, dass es einen sehr guten Python-Modus für Emacs gibt. All diese Programmierumgebungen bieten Syntax-Highlighting, automatische Einrückung und Zugriff auf den interaktiven Interpreter während der Codierung. Konsultieren Sie die Python-Wiki für eine vollständige Liste der Python-Editorumgebungen.

Wenn Sie die Nutzung von Python in der Bildung diskutieren möchten, sind Sie vielleicht daran interessiert, der edu-sig Mailingliste beizutreten.