Heim >Backend-Entwicklung >Python-Tutorial >Der Unterschied zwischen den Versionen Python2.x und 3??.x

Der Unterschied zwischen den Versionen Python2.x und 3??.x

高洛峰
高洛峰Original
2016-11-23 13:50:241049Durchsuche

Die Version 3.0 von Python wird oft als Python 3000 oder kurz Py3k bezeichnet. Dies ist ein wesentliches Upgrade im Vergleich zu früheren Versionen von Python.

Um nicht zu viel Belastung mit sich zu bringen, wurde Python 3.0 nicht im Hinblick auf Abwärtskompatibilität entwickelt.

Viele Programme, die für frühere Python-Versionen entwickelt wurden, können unter Python 3.0 nicht ordnungsgemäß ausgeführt werden.

Um bestehende Programme zu pflegen, ist Python 2.6 eine Übergangsversion, die im Wesentlichen die Syntax und Bibliotheken von Python 2.x verwendet. Sie berücksichtigt auch die Migration zu Python 3.0 und ermöglicht die Verwendung einiger Python 3.0 Syntax und Funktionen.

Neuen Python-Programmen wird empfohlen, die Syntax der Python 3.0-Version zu verwenden.

Es sei denn, die Ausführungsumgebung kann Python 3.0 nicht installieren oder das Programm selbst verwendet eine Bibliothek eines Drittanbieters, die Python 3.0 nicht unterstützt. Zu den Bibliotheken von Drittanbietern, die Python 3.0 derzeit nicht unterstützen, gehören Twisted, py2exe, PIL usw.

Die meisten Bibliotheken von Drittanbietern arbeiten hart daran, mit der Python 3.0-Version kompatibel zu sein. Auch wenn Python 3.0 nicht sofort einsetzbar ist, empfiehlt es sich, ein Programm zu schreiben, das mit Python 3.0 kompatibel ist, und es dann mit Python 2.6 oder Python 2.7 auszuführen.

Hauptänderungen

Die Änderungen in Python 3.0 betreffen hauptsächlich die folgenden Aspekte:

Die print-Anweisung ist weg und wurde durch die print()-Funktion ersetzt. Python 2.6 und Python 2.7 unterstützen diese Form der Drucksyntax teilweise. In Python 2.6 und Python 2.7 sind die folgenden drei Formen äquivalent:

print „fish“

print („fish“) #Hinweis dass nach print ein Leerzeichen steht

print("fish") #print() kann keine anderen Parameter annehmen

Allerdings ist Python 2.6 unterstützt tatsächlich die neue print()-Syntax:

from __future__ import print_function

print("fish", "panda", sep=' , ')

Die neue str-Kategorie stellt eine Unicode-Zeichenfolge dar, die der Unicode-Kategorie der Python 2.x-Version entspricht. Die Byte-Sequenz wird durch eine Syntax ähnlich wie b „abc“ dargestellt und durch die Byte-Klasse dargestellt, die der Str-Klasse von Python 2.x entspricht.

Die beiden Kategorien können nicht mehr automatisch implizit konvertiert werden, daher ist „fish“ b“panda“ ein Fehler in Python 3.x. Die korrekte Schreibweise ist „fish“ b“panda“.decode(“utf-8“). Python 2.6 kann Bytesequenzen automatisch als Unicode-Strings erkennen, indem:

from __future__ import unicode_literals

print(repr ("fish"))

Der Divisionsoperator „/“ gibt in Python 3.x immer eine Gleitkommazahl zurück. In Python 2.6 wird beurteilt, ob Dividend und Divisor ganze Zahlen sind. Wenn es sich um eine Ganzzahl handelt, wird ein Ganzzahlwert zurückgegeben, was einer Ganzzahldivision entspricht. Wenn es sich um eine Gleitkommazahl handelt, wird ein Gleitkommawert zurückgegeben.

Damit Python 2.6 einheitlich Gleitkommawerte zurückgibt, können Sie:

von __future__ import division

drucken (3/ 2)

result={}

für k, v in d.items ():

result[expr1]=expr2

return result

Set Comprehensions) {expr1 for x in Sachen}. Diese Syntax entspricht:

result = set()

for x in stuff:

result.add( expr1)

Ergebnis zurückgeben

def sendMail(from_: str, to: str, title: str, body : str) -> bool:

pass

alter Name

neuer Name

_winreg winreg

ConfigParser configparser

copy_reg copyreg

Warteschlangenwarteschlange

SocketServer socketserver

repr reprlib

Die Oktalzahl muss als 0o777 geschrieben werden, die Originalform 0777 kann nicht verwendet werden, die Binärzahl muss als 0b111 geschrieben werden. Eine neue bin()-Funktion wurde hinzugefügt, um eine Ganzzahl in eine Binärzeichenfolge umzuwandeln. Python 2.6 unterstützt bereits beide Syntaxen.

dict.keys(), dict.values(), dict.items(), map(), filter(), range(), zip() geben keine Listen mehr zurück, sondern Iteratoren.

Wenn zwischen den beiden Objekten keine klar definierte sinnvolle Reihenfolge besteht. Wenn Sie sie mit <, >, <=, >= vergleichen, wird eine Ausnahme ausgelöst. Beispielsweise gibt 1 < "" in Python 2.6 True zurück, löst jedoch in Python 3.0 eine Ausnahme aus. Jetzt wurden die Funktionen cmp(), example.__cmp__() entfernt.

Sie können die Parameter und Rückgabewerte der Funktion mit Anmerkungen versehen. Mit dieser Funktion kann die IDE eine tiefergehende Analyse des Quellcodes durchführen. Fügen Sie beispielsweise Kategorieinformationen zu Parametern hinzu:

Die Syntax zum Abfangen von Ausnahmen wird von „except exc, var“ in „exclusive exc as var“ geändert. Verwenden Sie die Syntax außer (exc1, exc2) als Variable, um mehrere Ausnahmekategorien gleichzeitig abzufangen. Python 2.6 unterstützt bereits beide Syntaxen.

Neue Schreibweise: {1,2,3,4}. Beachten Sie, dass {} immer noch ein leeres Wörterbuch (Dikt) darstellt.

Wörterbuchverständnis {expr1: expr2 für k, v in d}, diese Syntax entspricht

Int- und Long-Typen zusammenführen.

Mehrere Module wurden umbenannt (gemäß PEP8):

Das StringIO-Modul ist jetzt in das neue IO-Modul integriert. Neu, MD5, Gopherlib und andere Module wurden gelöscht. Python 2.6 unterstützt bereits das neue io-Modul.

httplib, BaseHTTPServer, CGIHTTPServer, SimpleHTTPServer, Cookie, cookielib werden im http-Paket zusammengeführt.

Die exec-Anweisung wird abgebrochen, so dass nur die exec()-Funktion übrig bleibt. Python 2.6 unterstützt bereits die Funktion exec().


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn