Heim >Backend-Entwicklung >Python-Tutorial >Machen Sie Ihr Python-Programm sowohl mit Python2 als auch mit Python3 kompatibel
Sie müssen nur geringfügige Änderungen an Ihrem Code vornehmen, um sowohl Python2 als auch Python3 zu unterstützen. Im Folgenden werde ich kurz vorstellen, wie Sie dafür sorgen, dass Ihr Python-Code sowohl Python2 als auch Python3 unterstützt.
Python-Versionen vor Python 2.6 aufgeben
Python-Versionen vor Python 2.6 fehlen einige neue Funktionen, was Ihre Migrationsarbeit erheblich erschweren wird. Wenn dies nicht erforderlich ist, verzichten Sie auf die Unterstützung früherer Versionen.
Verwenden Sie das 2to3-Tool, um den Code zu überprüfen
2to3 ist ein Code-Konvertierungstool, das mit Python geliefert wird und Python2-Code automatisch in Python3-Code konvertieren kann. Natürlich trägt der konvertierte Code leider nichts zur Python2-Kompatibilität bei. Daher verwenden wir den 2to3-konvertierten Code nicht wirklich. Führen Sie 2to3 t.py aus, um die Ausgabeinformationen anzuzeigen und damit verbundene Probleme zu beheben.
Verwenden Sie python -3, um Python-Programme auszuführen
2to3 kann viele Kompatibilitätsprobleme mit Python2 und 3 überprüfen, aber es gibt auch viele Probleme, die 2to3 nicht finden kann. Nach dem Hinzufügen des Parameters -3 zeigt das Programm auf der Konsole an, dass Python2 und Python3 inkonsistent sind und 2to3 damit nicht umgehen kann. Beispielsweise wurden die Divisionsverarbeitungsregeln in Python3 und Python2 geändert. Wenn Sie 4/2 mit dem Parameter -3 ausführen, wird DeprecationWarning: classic int division angezeigt.
from __future__ import
Nach „from __future__ import“ können Sie die zukünftigen Funktionen von Python nutzen. Die vollständigen zukünftigen Funktionen von Python finden Sie in __future__ . Alle Zeichen in Python3 sind Unicode geworden. In Python2 müssen Unicode-Zeichen beim Definieren mit u vor dem Zeichen hinzugefügt werden, aber in 3 ist u nicht erforderlich und das Programm wird nach dem Hinzufügen von u nicht kompiliert. Um dieses Problem zu lösen, können Sie „aus zukünftigen Unicode-Literalen importieren“, sodass das Verhalten von Zeichen in Python2 mit dem in Python3 übereinstimmt und in Python2 definierte normale Zeichen automatisch als Unicode erkannt werden.
Importproblem
Es fehlen viele Python2-Pakete in Python3. In den meisten Fällen wurden nur die Namen dieser Pakete geändert. Diese Probleme können wir beim Import lösen.
versuchen Sie: #python2
from UserDict import UserDict
#Es wird empfohlen, entsprechend dem Namen von python3 zu importieren
from UserDict import DictMixin as MutableMapping
außer ImportError: #python3
aus Sammlungen importieren UserDict
aus Sammlungen importieren MutableMapping
Verwenden Sie Python3, um Programme zu schreiben
Drucken ist Der Schlüssel in Python2 Word, print wurde zu einer Funktion in Python3. Tatsächlich ist die Druckfunktion bereits in Python2.6 enthalten, sodass Sie zum Drucken einfach die in 2to3 gegebenen Tipps befolgen und auf die neue Schreibweise umstellen können. Es wurden einige Änderungen an der Ausnahmebehandlung in Python3 vorgenommen. Dies ähnelt dem Drucken. Sie können es direkt entsprechend den Eingabeaufforderungen in 2to3 ändern.
Überprüfen Sie die aktuell ausgeführte Python-Version
Manchmal müssen Sie möglicherweise unterschiedliche Codes für Python2 und Python3 schreiben. Sie können den folgenden Code verwenden, um die Python-Version des aktuellen Systems zu überprüfen.
import sys
if sys.version > '3':
PY3 = True
sonst:
PY3 = False
six
six bietet einige einfache Tools, um die Unterschiede zwischen Python 2 und Python 3 zusammenzufassen. Ich empfehle nicht wirklich, sechs zu verwenden. Wenn Sie keine Python-Versionen vor Python2.6 unterstützen müssen, ist es auch ohne sechs einfacher, Kompatibilitätsprobleme zu lösen. Wenn Sie sechs verwenden, ähnelt Ihr Code eher Python2 als Python3.
Die Popularität von Python3 muss von jedem Pythoner gefördert werden. Vielleicht können Sie nicht sofort auf Python3 upgraden, aber bitte beginnen Sie jetzt mit dem Schreiben von Python3-kompatiblem Code und aktualisieren Sie auf Python3, wenn die Bedingungen reif sind.