Python 2 vs Python 3: Praktische Überlegungen

Einführung

Python ist eine äußerst lesbare und vielseitige Programmiersprache. Mit einem Namen, der von der britischen Comedy-Gruppe Monty Python inspiriert wurde, war es ein wichtiges grundlegendes Ziel des Python-Entwicklungsteams, die Sprache unterhaltsam zu gestalten. Python ist einfach einzurichten und in einem relativ unkomplizierten Stil mit sofortiger Rückmeldung von Fehlern geschrieben. Es ist eine großartige Wahl für Anfänger.

Da Python eine Multiparadigm-Sprache ist - das heißt, es unterstützt mehrere Programmierstile, einschließlich Scripting und objektorientierte -, eignet es sich für den allgemeinen Gebrauch. Python wird in der Industrie zunehmend von Organisationen wie der United Space Alliance (NASAs größter Shuttle-Support-Dienstleister) und Industrial Light & Magic (dem VFX- und Animationsstudio von Lucasfilm) eingesetzt und bietet ein großes Potenzial für diejenigen, die eine zusätzliche Programmiersprache erwerben möchten .

Python wurde Ende der 1980er Jahre entwickelt und erstmals 1991 veröffentlicht. Es wurde von Guido van Rossum verfasst, der immer noch sehr aktiv in der Community ist. Als Nachfolger der ABC-Programmiersprache konzipiert, enthielt Pythons erste Iteration bereits die Ausnahmebehandlung: functions und classes with inheritance. Als 1994 ein wichtiges Diskussionsforum für Usenet-Newsgroups namens comp.lang.python gegründet wurde, wuchs die Benutzerbasis von Python und ebnete Python den Weg zu einer der beliebtesten Programmiersprachen für die Open-Source-Entwicklung.

Gesamtübersicht

Bevor wir uns mit den potenziellen Möglichkeiten und den wichtigsten programmatischen Unterschieden zwischen Python 2 und Python 3 befassen, werfen wir einen Blick auf den Hintergrund der neueren Hauptversionen von Python.

Python 2

Python 2 wurde Ende 2000 veröffentlicht und signalisierte mit der Implementierung von PEP (Python Enhancement Proposal), einer technischen Spezifikation, die entweder Informationen für Python-Community-Mitglieder bereitstellt oder eine neue Funktion von Python beschreibt, einen transparenteren und umfassenderen Sprachentwicklungsprozess als frühere Versionen von Python Sprache.

Darüber hinaus enthielt Python 2 viele weitere programmatische Funktionen, darunter eine zykluserkennende Garbage Collector-Funktion zur Automatisierung der Speicherverwaltung, eine verbesserte Unicode-Unterstützung zur Standardisierung von Zeichen und ein Listenverständnis zur Erstellung einer Liste auf der Grundlage vorhandener Listen. Mit der Weiterentwicklung von Python 2 wurden weitere Funktionen hinzugefügt, einschließlich der Vereinheitlichung der Python-Typen und -Klassen in einer Hierarchie in Python Version 2.2.

Python 3

Python 3 gilt als die Zukunft von Python und ist die Version der Sprache, die derzeit in der Entwicklung ist. Python 3 war eine grundlegende Überarbeitung und wurde Ende 2008 veröffentlicht, um die eigentlichen Designfehler früherer Sprachversionen zu beheben und zu korrigieren. Der Fokus der Python 3-Entwicklung lag darauf, die Codebasis zu bereinigen und Redundanz zu entfernen, um zu verdeutlichen, dass es nur eine Möglichkeit gibt, eine bestimmte Aufgabe auszuführen.

Zu den wichtigsten Änderungen an Python 3.0 gehörte die Umwandlung der Anweisung "+ print +" in eine integrierte Funktion, die Verbesserung der Aufteilung von Ganzzahlen und die Bereitstellung von mehr Unicode-Unterstützung.

Anfangs wurde Python 3 nur langsam übernommen, da die Sprache nicht mit Python 2 kompatibel war und die Benutzer entscheiden mussten, welche Version der Sprache verwendet werden soll. Darüber hinaus waren viele Paketbibliotheken nur für Python 2 verfügbar. Da das Entwicklerteam von Python 3 jedoch erneut darauf hingewiesen hat, dass die Python 2-Unterstützung nicht mehr unterstützt wird, wurden weitere Bibliotheken auf Python 3 portiert. Die zunehmende Einführung von Python 3 zeigt sich in der Anzahl der Python-Pakete, die jetzt Python 3 unterstützen. Zum Zeitpunkt der Erstellung waren 339 der 360 beliebtesten Python-Pakete enthalten.

Python 2.7

Nach der Veröffentlichung von Python 3.0 im Jahr 2008 wurde Python 2.7 am 3. Juli 2010 veröffentlicht und als letzte der 2.x-Versionen geplant. Die Absicht von Python 2.7 bestand darin, es Python 2.x-Benutzern zu erleichtern, Funktionen auf Python 3 zu portieren, indem ein gewisses Maß an Kompatibilität zwischen beiden bereitgestellt wurde. Diese Kompatibilitätsunterstützung umfasste erweiterte Module für Version 2.7 wie "+ unittest " zur Unterstützung der Testautomatisierung, " argparse " zum Analysieren von Befehlszeilenoptionen und praktischere Klassen in " collections +".

Aufgrund der einzigartigen Position von Python 2.7 als Version zwischen den früheren Iterationen von Python 2 und Python 3.0 ist es aufgrund seiner Kompatibilität mit vielen robusten Bibliotheken weiterhin eine sehr beliebte Wahl für Programmierer. Wenn wir heute über Python 2 sprechen, beziehen wir uns normalerweise auf die Python 2.7-Version, da dies die am häufigsten verwendete Version ist.

Python 2.7 wird jedoch als Legacy-Sprache betrachtet und seine Weiterentwicklung, die heute hauptsächlich aus Fehlerkorrekturen besteht, wird 2020 vollständig eingestellt.

Hauptunterschiede

Obwohl Python 2.7 und Python 3 viele ähnliche Funktionen gemeinsam haben, sollten sie nicht als vollständig austauschbar angesehen werden. Obwohl Sie in beiden Versionen guten Code und nützliche Programme schreiben können, sollten Sie sich darüber im Klaren sein, dass es einige erhebliche Unterschiede in der Codesyntax und -verarbeitung gibt.

Im Folgenden finden Sie einige Beispiele. Beachten Sie jedoch, dass Sie wahrscheinlich mehr syntaktische Unterschiede feststellen werden, wenn Sie Python weiter erlernen.

Drucken

In Python 2 wird "+ print " anstelle einer Funktion als Anweisung behandelt. Dies war ein typisches Problem, da für viele andere Aktionen in Python Argumente in Klammern erforderlich sind, um sie auszuführen. Wenn Sie möchten, dass Ihre Konsole in Python 2 " Sammy, der Hai ist mein Lieblingsmeerestier" druckt, können Sie dies mit der folgenden Anweisung "+ print" tun:

print "Sammy the Shark is my favorite sea creature"

In Python 3 wird "+ print () +" jetzt explizit als Funktion behandelt. Wenn Sie dieselbe Zeichenfolge wie oben ausdrucken möchten, können Sie dies einfach und problemlos mithilfe der Syntax einer Funktion tun:

print("Sammy the Shark is my favorite sea creature")

Diese Änderung hat die Syntax von Python konsistenter gemacht und den Wechsel zwischen verschiedenen Druckfunktionen erleichtert. Praktischerweise ist die Syntax + print () + auch mit Python 2.7 abwärtskompatibel, sodass Ihre Python 3-Funktionen + print () + in beiden Versionen ausgeführt werden können.

Division mit ganzen Zahlen

In Python 2 wird jede Zahl, die Sie ohne Dezimalstellen eingeben, als Programmiertyp mit dem Namen * integer * behandelt. Auf den ersten Blick scheint dies eine einfache Möglichkeit zu sein, mit Programmiertypen umzugehen. Wenn Sie jedoch versuchen, Ganzzahlen zu teilen, erwarten Sie manchmal eine Antwort mit Dezimalstellen (genannt * float *), wie in:

5 / 2 = 2.5

In Python 2 waren Ganzzahlen jedoch stark typisiert und änderten sich auch in Fällen, in denen dies intuitiv sinnvoll wäre, nicht zu einem Gleitkomma mit Dezimalstellen.

Wenn die beiden Zahlen auf beiden Seiten des Symbols für die Division "+ / " Ganzzahlen sind, führt Python 2 die * Flurdivision * durch, sodass für den Quotienten " x " die zurückgegebene Zahl die größte Ganzzahl ist, die kleiner oder gleich " x " ist `. Dies bedeutet, dass Python 2.7 beim Schreiben von "+5 / 2 +" zum Teilen der beiden Zahlen die größte Ganzzahl kleiner oder gleich 2,5 zurückgibt, in diesem Fall " 2 +":

a = 5 / 2
print a
Output2

Um dies zu überschreiben, können Sie Dezimalstellen wie in +5.0 / 2.0 + hinzufügen, um die erwartete Antwort + 2.5 + zu erhalten.

In Python 3 wurde integer division intuitiver im:

a = 5 / 2
print(a)
Output2.5

Sie können weiterhin "5.0 / 2.0 +" verwenden, um " 2.5 " zurückzugeben. Wenn Sie jedoch eine Unterteilung durchführen möchten, sollten Sie die Python 3-Syntax " // +" wie folgt verwenden:

b = 5 // 2
print(b)
Output2

Diese Änderung in Python 3 machte das Teilen durch ganze Zahlen viel intuitiver und ist eine Funktion, die mit Python 2.7 * nicht * abwärtskompatibel ist.

Unicode-Unterstützung

Wenn Programmiersprachen den Typ * https://www.digitalocean.com/community/tutorial_series/working-with-strings-in-python-3 [string] * verwenden, dh eine Folge von Zeichen, können sie dies tun Es gibt verschiedene Möglichkeiten, wie Computer Zahlen in Buchstaben und andere Symbole umwandeln können.

Python 2 verwendet standardmäßig das ASCII-Alphabet. Wenn Sie also "" Hello, Sammy! "" Eingeben, behandelt Python 2 die Zeichenfolge als ASCII. ASCII ist auf höchstens ein paar hundert Zeichen in verschiedenen erweiterten Formen beschränkt und keine sehr flexible Methode zum Kodieren von Zeichen, insbesondere nicht-englischen Zeichen.

Um die vielseitigere und robustere Unicode-Zeichenkodierung zu verwenden, die mehr als 128.000 Zeichen in zeitgenössischen und historischen Skripten und Symbolsätzen unterstützt, müssen Sie "+ u" Hello, Sammy! "" Mit dem Präfix " u +" eingeben für Unicode.

Python 3 verwendet standardmäßig Unicode, wodurch der Programmierer zusätzliche Entwicklungszeit spart. Außerdem können Sie auf einfache Weise viel mehr Zeichen direkt in Ihr Programm eingeben und anzeigen. Da Unicode eine größere sprachliche Zeichenvielfalt sowie die Anzeige von Emojis unterstützt, wird durch die Verwendung von Unicode als Standardzeichencodierung sichergestellt, dass mobile Geräte auf der ganzen Welt in Ihren Entwicklungsprojekten problemlos unterstützt werden.

Wenn Sie möchten, dass Ihr Python 3-Code mit Python 2 abwärtskompatibel ist, können Sie das + u + vor Ihrer Zeichenfolge behalten.

Weiterentwicklung

Der größte Unterschied zwischen Python 3 und Python 2 ist kein syntaktischer, aber die Tatsache, dass Python 2.7 im Jahr 2020 weiter an Unterstützung verlieren wird und Python 3 mit mehr Funktionen und mehr Fehlerkorrekturen weiterentwickelt wird.

Zu den jüngsten Entwicklungen gehörte formatted string literals, eine einfachere Anpassung von https://www.digitalocean. de / community / tutorials / konstruieren-von-klassen-und-definieren-von-objekten-in-python-3 [klassenerstellung] und eine sauberere syntaktische möglichkeit, mit der matrixmultiplikation umzugehen.

Die Weiterentwicklung von Python 3 bedeutet, dass Entwickler darauf vertrauen können, dass Probleme rechtzeitig behoben werden, und dass Programme effektiver sind, wenn im Laufe der Zeit mehr Funktionen eingebaut werden.

Zusätzliche zu berücksichtigende Punkte

Als jemand, der Python als neuer Programmierer startet, oder als erfahrener Programmierer, der neu in der Python-Sprache ist, sollten Sie überlegen, was Sie beim Erlernen der Sprache erreichen möchten.

Wenn Sie nur lernen möchten, ohne ein bestimmtes Projekt im Auge zu haben, sollten Sie wahrscheinlich berücksichtigen, dass Python 3 weiterhin unterstützt und entwickelt wird, während Python 2.7 dies nicht tun wird.

Wenn Sie jedoch vorhaben, einem vorhandenen Projekt beizutreten, möchten Sie wahrscheinlich am ehesten wissen, welche Version von Python das Team verwendet und wie eine andere Version mit der alten Codebasis interagiert, wenn die vom Projekt verwendeten Pakete in a unterstützt werden andere Version, und was sind die Implementierungsdetails des Projekts.

Wenn Sie ein Projekt starten, an das Sie denken, lohnt es sich zu untersuchen, welche Pakete zur Verfügung stehen und mit welcher Python-Version sie kompatibel sind. Wie bereits erwähnt, waren frühere Versionen von Python 3 mit Bibliotheken, die für Python 2-Versionen erstellt wurden, zwar weniger kompatibel, viele wurden jedoch auf Python 3 portiert oder haben sich dazu verpflichtet, dies in den nächsten vier Jahren zu tun.

Fazit

Python ist eine vielseitige und gut dokumentierte Programmiersprache. Unabhängig davon, ob Sie mit Python 2 oder Python 3 arbeiten, können Sie an aufregenden Softwareprojekten arbeiten.

Obwohl es einige wichtige Unterschiede gibt, ist es nicht allzu schwierig, mit ein paar Anpassungen von Python 3 zu Python 2 zu wechseln, und Sie werden häufig feststellen, dass Python 2.7 problemlos Python 3-Code ausführen kann, insbesondere wenn Sie gerade erst anfangen. Weitere Informationen zu diesem Vorgang finden Sie im Tutorial How To Port Python 2 Code to Python 3.

Es ist wichtig zu bedenken, dass Python 2.7 weniger unterstützt wird, da die Aufmerksamkeit der Entwickler und der Community auf Python 3 gerichtet ist.