Articles

Principales différences entre Python 2 et 3 : comment naviguer dans le changement

Ce tutoriel abordera les sujets suivants :

  1. Expressions
  2. Options d’impression
  3. Opérations d’inégalité
  4. Gamme
  5. Migration automatisée
  6. Problèmes de performance
  7. Certains changements majeurs de gestion interne
  8. Avez-vous des problèmes ?

Expressions

Les expressions représentent quelque chose, comme un nombre, une chaîne de caractères ou une instance d’une classe. Toute valeur est une expression ! Tout ce qui fait quelque chose est une expression. Toute affectation à une variable ou appel de fonction est une instruction. Toute valeur contenue dans cette déclaration dans une expression.

Voici ce que vous taperiez pour obtenir une expression évaluée dans Python 2:

X = raw_input ("enter some values)

Mais dans Python 3, vous devriez taper ceci:

X = input ("enter some values") 

Donc, tout ce que nous entrons alors pour la valeur est affecté à la variable x dans 2 et 3. Lorsque je saisis 2*6 dans Python 2, le résultat sera 12, qui est la valeur évaluée.

Cependant, lorsque ce même programme est exécuté dans Python 3, le résultat est une valeur de chaîne de caractères. Dans ce cas, cela ressemblerait à 2*6 au format chaîne de caractères.

Alors, comment pouvons-nous obtenir l’expression évaluée ? Maintenant, nous devons utiliser une expression ou une fonction appelée eval. Lorsque vous écrivez eval avant l’entrée, cela va transformer l’expression en une valeur évaluée.

x= eval(input("enter some values")) = 12 

Exemples détaillés d’expressions :

Voici à quoi cela ressemblerait dans Python 2 :

name = input("What is your name? ")print ("Hello, %s." %name) 

Et la sortie:

python

Voici à quoi cela ressemblerait dans Python 3 :

name = input("What is your name? ")print ("Hello, %s." %name) 

Et la sortie:

python

Comme vous pouvez clairement le voir, il y a très peu de différence entre les deux.

Lire aussi : Une introduction au langage de programmation Python

Lorsque Guido van Rossum a développé Python, il voulait créer un langage de programmation « simple » qui contourne les vulnérabilités des autres systèmes. En raison de la syntaxe simple et des phrases syntaxiques sophistiquées, le langage est devenu la norme pour diverses applications scientifiques telles que l’apprentissage automatique.

Options d’impression

En Python 2, l’impression est une déclaration qui ne nécessite pas de parenthèse. En Python 3, print est une fonction et les valeurs doivent être écrites entre parenthèses.

Python 2

Entrée:

print "hello world" 

Sortie:

python

Python 3

Entrée :

1 != 1.0print (False) 

Sortie:

python

Opérations inégales

Passons à la troisième différence. Lorsque nous utilisons un opérateur inégal dans Python 2, nous devons utiliser les signes plus grand que > ou moins grand que <. Cependant, dans Python 3, il existe un opérateur général. Le point d’exclamation ! et le signe égal = sont utilisés pour montrer si les choses ne sont pas égales à la même quantité.

Python 2 – <> opérateur est utilisé pour non égal
Python 3 – ! l’opérateur est utilisé pour non égal

Python 2

Entrée:

1 <> 1.0print "False" 

Sortie :

PYTHON

Python 3

Entrée:

1 != 1.0print (False)1 != 1.0print (False) 

Sortie:

SAISIR AUSSI : Glances : Gardez un bon œil sur votre code avec cet outil de surveillance Python

Range

Maintenant, passons aux plages. Que sont les plages ?

Une plage est utilisée pour générer une liste de nombres, qui est généralement utilisée pour itérer dessus avec for boucles.

python

Ici, vous pouvez voir que X est égal à la plage 10. Lorsque nous vérifions la variable X, elle a renvoyé notre type de liste. Cela signifie que dans Python 2, range est le type de liste. Lorsque j’écris X, après cela, nous obtenons une liste d’objet. qui est 0 1 2 3 4 5 6 7 8 9.

python

Maintenant, passons à Python 3, lorsque nous écrivons x égal à plage 5. Cette valeur de l’intervalle 5 est affectée à la variable X ; lorsque nous vérifions le type de la variable X, alors elle renvoie un objet d’intervalle lui-même. Cela signifie que dans Python 3 range est un objet range lui-même.

Python 2

Entrée:

print range(0,10,1) 

Sortie:

Python 3

Intrée:

print(list(range(10))) 

Sortie :

Migration automatisée

Alors, comment automatiser le script de migration pour déplacer le code de Python 2 vers 3 ?

Ici, nous pouvons tester avec un programme simple comme Add 2 Numbers in python.

Python 2

Entrée:

n1 = 1n2 = 2add = float(n1) + float(n2)print 'sum of {0} and {1} is {2}'.format(n1, n2, add) 

Sortie:

Maintenant en utilisant la migration de 2 en 3 nous pouvons convertir le code ci-dessus.

Input:

n1 = 1n2 = 2add = float(n1) + float(n2)print('sum of {0} and {1} is {2}'.format(n1, n2, add)) 

Output:

Donc ici nous voyons qu’il peut être converti en code Python 3 par 2 to 3 sur la ligne de commande.

Python fournit son propre outil appelé 2to3.py. Qui exécute un tas de scripts pour traduire votre code python 2 en 3. Bien qu’il ne soit pas parfait, mais il fait un travail incroyable dans l’ensemble. Après avoir converti n’importe quel code, vous devriez y aller et corriger manuellement tous les problèmes.

SE AUSSI : Viens, Nagini. Nous devons vérifier ce code Python

Performance

La plupart des problèmes de performance ont été corrigés dans cette mise à jour ! En comparant les benchmarks entre les deux versions, les différences sont presque négligeables.

Certains changements majeurs de gestion interne

Python 2

  • Imprimer les parenthèses fonctionnelles facultatives.
  • Préfixer la chaîne avec u pour en faire une chaîne unicode.
  • La division d’entiers renvoie toujours un entier – 5/2=2.
  • Raw_input () lit une chaîne de caractères.
  • input() évalue les données lues.
  • générateur .next().

Python 3

  • Imprimer les parenthèses fonctionnelles obligatoires.
  • Chaîne de caractères unicode par défaut.
  • La division d’entiers peut donner un float – 5/2=2,5.
  • Raw_input() non disponible.
  • L’entrée lit toujours une chaîne de caractères.
  • Next (generator).
  • Py2 to py3 utility.
  • Dictionary .keys() and .values() returns a view not a list.
  • On ne peut plus utiliser les opérateurs de comparaison sur les comparaisons non naturelles.
    Eg. None < None lèvera une TypeError au lieu de retourner false.
  • L’opérateur de formatage de chaîne de caractères en pourcentage (%) est déprécié utilisez la fonction .format() ou la concaténation.

SAISIR AUSSI : Top 5 des IDE et éditeurs de code pour Python

Vous avez des problèmes ?

Vous pouvez rencontrer une erreur ici et là si vous travaillez en python 2.x depuis un certain temps. Ce n’est pas grave ! Il suffit de googler le problème, il est presque certain que quelqu’un d’autre a également rencontré ce problème lors de la migration.

Laisser un commentaire

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