- Divisionsoperator
- print-Funktion
- Unicode
- xrange
- Fehlerbehandlung
- _future_ module
Divisionsoperator
Wenn wir unseren Code portieren oder Python 3.x-Code in Python 2.x verwenden, kann es gefährlich sein, wenn ganzzahlige Divisionsänderungen unbemerkt bleiben (da sie keinen Fehler auslösen). Es ist vorzuziehen, den gleitenden Wert (wie 7.0/5 oder 7/5.0) zu verwenden, um das erwartete Ergebnis zu erhalten, wenn wir unseren Code portieren.
print
7
/
5
print
-
7
/
5
Druckfunktion
Dies ist die bekanntestebekannteste Änderung. Dabei wird das Schlüsselwort print in Python 2.x durch die Funktion print() in Python 3.x ersetzt. Allerdings funktionieren Klammern in Python 2, wenn nach dem Schlüsselwort print ein Leerzeichen eingefügt wird, weil der Interpreter es als Ausdruck auswertet.
print
'Hello, Geeks'
print
(
'Hope You like these facts'
)
Wie wir sehen können, wenn wir die Klammern in Python 2.x dann gibt es kein Problem, aber wenn wir in Python 3.x keine Klammern verwenden, bekommen wir einen SyntaxError.
Unicode:
In Python 2 ist ein impliziter str-Typ ASCII. Aber in Python 3.x ist der implizite str-Typ Unicode.
print
(
type
(
'default string '
))
print
(
type
(b
'string with b '
))
Python 2.x unterstützt auch Unicode
print
(
type
(
'default string '
))
print
(
type
(u
'string with b '
))
xrange:
xrange() von Python 2.x gibt es in Python 3.x nicht. In Python 2.x liefert range eine Liste, d. h. range(3) liefert, während xrange ein xrange-Objekt liefert, d. h., xrange(3) gibt ein Iterator-Objekt zurück, das ähnlich wie ein Java-Iterator funktioniert und bei Bedarf eine Zahl erzeugt.
Wenn wir mehrfach über dieselbe Sequenz iterieren müssen, bevorzugen wir range(), da range eine statische Liste liefert. xrange() rekonstruiert die Sequenz jedes Mal. xrange() unterstützt keine Slices und andere Listenmethoden. Der Vorteil von xrange() ist, dass es Speicher spart, wenn die Aufgabe darin besteht, über einen großen Bereich zu iterieren.
In Python 3.x tut die Funktion range nun das, was xrange in Python 2.x tut, also sollten wir, um unseren Code portabel zu halten, stattdessen lieber einen Bereich verwenden. Die range-Funktion von Python 3.x ist also xrange aus Python 2.x.
for
x
in
xrange
(
1
,
5
):
print
(x),
for
x
in
range
(
1
,
5
):
print
(x),
Fehlerbehandlung:
Eine kleine Änderung gibt es bei der Fehlerbehandlung in beiden Versionen. In Python 3.x ist das Schlüsselwort ‚as‘ erforderlich.
try
:
trying_to_check_error
except
NameError, err:
print
err,
'Error Caused'
try
:
trying_to_check_error
except
NameError as err:
print
(err,
'Error Caused'
)
__future__ Modul:
Dies ist im Grunde kein Unterschied zwischen den beiden Versionen, aber eine nützliche Sache, die hier erwähnt werden sollte. Die Idee des __future__-Moduls ist es, den Umstieg auf Python 3.x zu erleichtern.
Wenn wir planen, Python 3.x-Unterstützung in unserem 2.x-Code zu haben, können wir _future_-Importe in unserem Code verwenden.
Im folgenden Python-2.x-Code verwenden wir zum Beispiel das Integer-Divisionsverhalten von Python 3.x mit dem Modul __future__.
from
__future__
import
division
print
7
/
5
print
-
7
/
5
Output :
1.4 -1.4
Ein weiteres Beispiel, bei dem wir die Klammern in Python 2.x mit dem Modul __future__:
from
__future__
import
print_function
print
(
'GeeksforGeeks'
)
Ausgabe:
GeeksforGeeks
Hier finden Sie weitere Details zum Modul __future__.
Dieser Artikel wurde von Arpit Agarwal beigesteuert. Wenn Ihnen GeeksforGeeks gefällt und Sie einen Beitrag leisten möchten, können Sie auch einen Artikel schreiben und Ihren Artikel an [email protected] schicken. Sehen Sie Ihren Artikel auf der GeeksforGeeks-Hauptseite erscheinen und helfen Sie anderen Geeks.