- Division operator
- print functie
- Unicode
- xrange
- Error Handling
- _future_ module
Division operator
Als we onze code porten of python 3.x code uitvoeren in python 2.x, kan het gevaarlijk zijn als integer division veranderingen onopgemerkt blijven (omdat het geen foutmelding geeft). Het verdient de voorkeur om de drijvende waarde te gebruiken (zoals 7.0/5 of 7/5.0) om het verwachte resultaat te krijgen bij het porten van onze code.
print
7
/
5
print
-
7
/
5
afdrukfunctie
Dit is de bekendstebekende verandering. Hierin wordt het print sleutelwoord in Python 2.x vervangen door de print() functie in Python 3.x. Haakjes werken in Python 2 echter wel als er een spatie wordt toegevoegd na het print sleutelwoord, omdat de interpreter het als een expressie evalueert.
print
'Hello, Geeks'
print
(
'Hope You like these facts'
)
Zoals we kunnen zien, als we haakjes gebruiken in python 2.x dan is er geen probleem, maar als we geen haakjes gebruiken in python 3.x, krijgen we SyntaxError.
Unicode:
In Python 2 is een impliciet str-type ASCII. Maar in Python 3.x is het impliciete str type Unicode.
print
(
type
(
'default string '
))
print
(
type
(b
'string with b '
))
Python 2.x ondersteunt ook Unicode
print
(
type
(
'default string '
))
print
(
type
(u
'string with b '
))
xrange:
xrange() van Python 2.x bestaat niet in Python 3.x. In Python 2.x, retourneert range een lijst, d.w.z. range(3) retourneert terwijl xrange een xrange object retourneert, d.w.z., xrange(3) retourneert een iterator object dat vergelijkbaar werkt met Java iterator en een getal genereert wanneer dat nodig is.
Als we meerdere keren over dezelfde reeks moeten itereren, geven we de voorkeur aan range() omdat range een statische lijst geeft. xrange() reconstrueert de reeks iedere keer. xrange() ondersteunt geen slices en andere lijst methoden. Het voordeel van xrange() is, dat het geheugen bespaart als de taak is om over een groot bereik te itereren.
In Python 3.x, doet de range functie nu wat xrange doet in Python 2.x, dus om onze code draagbaar te houden, willen we misschien in plaats daarvan een range gebruiken. Dus Python 3.x’s range functie is xrange uit Python 2.x.
for
x
in
xrange
(
1
,
5
):
print
(x),
for
x
in
range
(
1
,
5
):
print
(x),
Error Handling:
Er is een kleine verandering in de foutafhandeling in beide versies. In python 3.x is het ‘as’ sleutelwoord vereist.
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__ module:
Dit is in principe geen verschil tussen de twee versies, maar wel nuttig om hier te vermelden. Het idee van de __future__ module is om te helpen bij de migratie naar Python 3.x.
Als we van plan zijn om Python 3.x ondersteuning te hebben in onze 2.x code, kunnen we _future_ imports gebruiken in onze code.
Bijv. in de Python 2.x code hieronder, gebruiken we Python 3.x’s integer division gedrag met behulp van de __future__ module.
from
__future__
import
division
print
7
/
5
print
-
7
/
5
Uitvoer :
1.4 -1.4
Een ander voorbeeld waar we haakjes gebruiken in Python 2.x met behulp van de module __future__:
from
__future__
import
print_function
print
(
'GeeksforGeeks'
)
Uitvoer:
GeeksforGeeks
Refereer hiernaar voor meer details over de __future__ module.
Dit artikel is geschreven door Arpit Agarwal. Als je GeeksforGeeks leuk vindt en een bijdrage wilt leveren, kun je ook een artikel schrijven en je artikel mailen naar [email protected]. Zie je artikel verschijnen op de GeeksforGeeks hoofdpagina en help andere Geeks.