- Opérateur de division
- fonctionprint
- Unicode
- xrange
- Gestion des erreurs
- module_future_
Opérateur de division
Si nous portons notre code ou exécutons du code python 3.x dans python 2.x, il peut être dangereux que les changements de division d’entiers passent inaperçus (puisqu’ils ne soulèvent aucune erreur). Il est préférable d’utiliser la valeur flottante (comme 7,0/5 ou 7/5,0) pour obtenir le résultat attendu lors du portage de notre code.
print
7
5
print
-
7
/
5
.
Fonction d’impression
C’est le changement le plus connu.connu. En cela, le mot-clé print de Python 2.x est remplacé par la fonction print() de Python 3.x. Toutefois, les parenthèses fonctionnent dans Python 2 si un espace est ajouté après le mot-clé print, car l’interpréteur l’évalue comme une expression.
print
'Hello, Geeks'
print
(
'Hope You like these facts'
)
Comme nous pouvons le voir, si nous utilisons des parenthèses dans python 2.x alors il n’y a pas de problème mais si nous n’utilisons pas de parenthèses en python 3.x, nous obtenons SyntaxError.
Unicode:
En Python 2, un type str implicite est ASCII. Mais dans Python 3.x, le type str implicite est Unicode.
print
(
type
(
'default string '
))
print
(
type
(b
'string with b '
))
Python 2.x prend également en charge l’Unicode
print
(
type
(
'default string '
))
print
(
type
(u
'string with b '
))
xrange :
xrange() de Python 2.x n’existe pas dans Python 3.x. En Python 2.x, range renvoie une liste c’est-à-dire range(3) renvoie alors que xrange renvoie un objet xrange c’est-à-dire, xrange(3) renvoie un objet itérateur qui fonctionne de manière similaire à l’itérateur Java et génère un nombre lorsque cela est nécessaire.
Si nous devons itérer sur la même séquence plusieurs fois, nous préférons range() car range fournit une liste statique. xrange() reconstruit la séquence à chaque fois. xrange() ne supporte pas les tranches et autres méthodes de liste. L’avantage de xrange() est, qu’il économise de la mémoire lorsque la tâche est d’itérer sur une grande plage.
Dans Python 3.x, la fonction range fait maintenant ce que xrange fait dans Python 2.x, donc pour garder notre code portable, nous pourrions vouloir nous en tenir à l’utilisation d’une plage à la place. Ainsi, la fonction range de Python 3.x est xrange de Python 2.x.
for
x
in
xrange
(
1
,
5
):
print
(x),
for
x
in
range
(
1
,
5
):
print
(x),
.
Gestion des erreurs :
Il y a un petit changement dans la gestion des erreurs dans les deux versions. Dans python 3.x, le mot clé ‘as’ est obligatoire.
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'
)
Module__future__ :
Ce n’est fondamentalement pas une différence entre les deux versions, mais une chose utile à mentionner ici. L’idée du module __future__ est de faciliter la migration vers Python 3.x.
Si nous prévoyons d’avoir le support de Python 3.x dans notre code 2.x, nous pouvons utiliser les importations _future__ dans notre code.
Par exemple, dans le code Python 2.x ci-dessous, nous utilisons le comportement de division des entiers de Python 3.x en utilisant le module __future__.
from
__future__
import
division
print
7
/
5
print
-
7
/
5
Sortie :
1.4 -1.4
Encore un exemple où nous utilisons des parenthèses dans Python 2.x en utilisant le module __future__ :
from
__future__
import
print_function
print
(
'GeeksforGeeks'
)
Sortie :
GeeksforGeeks
Référez-vous à ceci pour plus de détails sur le module __future__.
Cet article est une contribution d’Arpit Agarwal. Si vous aimez GeeksforGeeks et que vous souhaitez contribuer, vous pouvez également écrire un article et l’envoyer par courrier à [email protected]. Voyez votre article apparaître sur la page principale de GeeksforGeeks et aidez d’autres Geeks.