Articles

GeeksforGeeks

Posted on
  • 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.

Python

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.

Python

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.

Python

print

.(

type('default string '))

print

.(

type(b'string with b '))



Python 2.x prend également en charge l’Unicode

Python

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.

Python

. forx inxrange(1, 5):
print(x),

forx inrange(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.

Python

try: .
trying_to_check_error

exceptNameError, err:

printerr, 'Error Caused'



Python

try

.:

trying_to_check_error
exceptNameError 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__.

Python

from__future__ importdivision

print7/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__ :

Python

.from

__future__ importprint_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.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *