Quel est le meilleur pour votre projet
Lancé il y a plus de trois décennies, Python demeure un langage de programmation extrêmement populaire, apprécié autant par les développeurs aguerris que par les novices en codage.
Les index PYPL et TIOBE placent tous deux Python en tête des langages les plus utilisés à l'échelle mondiale en octobre 2023.
L'enquête Stack Overflow de 2022 révèle également que Python était le deuxième langage de programmation le plus recherché. Il est donc évident qu'un développeur qui choisit d'apprendre et d'utiliser Python se positionne favorablement en termes d'opportunités d'emploi et de progression de carrière.
Cependant, une fois que Python est adopté comme langage de programmation principal, une autre interrogation surgit : Faut-il privilégier Python 2 ou Python 3 pour ses projets ? Cette question m'a moi-même préoccupé en tant que développeur Python. Si vous êtes également face à ce dilemme, cet article vous guidera pour prendre une décision éclairée.
Qu'est-ce que Python 2 ?
Python 2 et Python 3 représentent les deux versions majeures du langage Python. La version 2.0 a été introduite en 2000, apportant avec elle des fonctionnalités et des améliorations conçues pour faciliter l'apprentissage et l'utilisation de Python dans le développement.
Python 2 s'accompagnait également de la proposition d'amélioration Python (PEP), un document de référence fournissant des détails sur les nouveautés de Python, servant également de mécanisme principal pour soumettre de nouvelles fonctionnalités.
Python 2 a joui d'une grande popularité et était largement exploité par les développeurs et les entreprises. Néanmoins, le 1er janvier 2020, Python 2 a été déclaré obsolète et son support a cessé. Suite à cette date, aucune amélioration n'a été apportée à cette version. La dernière itération de Python 2 fut la version 2.7, publiée en 2010.
L'arrêt du support de Python 2 a naturellement déplacé l'attention vers la prochaine grande version du langage.
Qu’est-ce que Python 3 ?
Python 3 a vu le jour le 3 décembre 2008. Son objectif premier était de corriger les failles de conception et les problèmes de sécurité présents dans Python 2. Cette version a apporté des modifications substantielles et de nouvelles fonctionnalités visant à éliminer les redondances lors du codage et à rendre le code Python plus lisible.
La redondance en codage fait référence à la présence de codes répétitifs. Python 3 a introduit, entre autres, des changements notables dans la syntaxe du langage. Ces changements étaient si profonds que le code Python 3 est devenu incompatible avec Python 2.
On pourrait supposer que toutes les entreprises et tous les développeurs utilisent désormais Python 3, ce qui n'est pas le cas. Une enquête menée par JetBrains en 2022 auprès des développeurs Python a révélé qu'environ 7% d'entre eux utilisaient encore Python 2. Cette même étude a montré que Python 2 était surtout employé dans l'analyse de données, la création de graphiques et le DevOps.
Puisque les développeurs sont souvent confrontés au code, analysons quelques exemples qui illustrent les différences de syntaxe entre Python 2 et 3 avant d'aborder les principales distinctions entre ces deux versions.
Différences de syntaxe entre Python 2 et Python 3
Une des différences notables entre Python 2 et 3 réside dans la manière dont les informations sont affichées. Dans Python 2, « print » est une instruction, tandis que dans Python 3, il s'agit d'une fonction. Les exemples de code ci-dessous illustrent ces différences :
Python 2
print "Hello, World!"
Sortie:
Python 3
print("Hello, World!")
Sortie:

Une autre divergence réside dans l'utilisation des annotations de type. Celles-ci permettent de spécifier le type d'une variable, d'un paramètre ou même le type de retour d'une fonction. Les annotations de type aident à minimiser les erreurs dans le code et à communiquer clairement les types attendus.
Les annotations de type sont une fonctionnalité de Python 3, mais ne sont pas supportées dans Python 2. L'exemple de code ci-après compare l'utilisation des annotations de type en Python 3 avec le même code sans annotations de type en Python 2.
Python 3
L'exemple ci-dessous utilise « int » pour indiquer que la variable « age » doit être un entier. « str » est utilisé pour annoter l'argument de la fonction « greet » ainsi que son type de retour.
# Type annotation - using int to indicate age is an integer
age: int = 30
# Type annotation - str using to indicate the argument type
# and the return type of the greet() function
def greet(name: str) -> str:
return "Hello, " + name
result = greet("Alice")
print(result)
print("Your age is " + str(age))
Sortie:
Hello, Alice Your age is 30

Python 2
Notez l'absence d'annotations de type dans ce code, ainsi que la manière dont l'affichage est effectué :
age = 30;
def greet(name):
return "Hello, " + name
result = greet("Alice")
print result
print "Your age is " + str(age)
Sortie:
Hello, Alice Your age is 30

Une autre différence notable lors de l'écriture de code avec Python 2 et 3 est le résultat d'une division entière. Pour illustrer cela, effectuons une division entière dans les deux versions :

Comme le montre l'exemple, une division entière en Python 2 donne un résultat entier, la partie décimale étant tronquée. En revanche, en Python 3, le résultat est une valeur flottante incluant la partie décimale.
Compte tenu de ces différences de syntaxe, lequel de ces deux langages choisiriez-vous ? Python 3 vous semble-t-il être une amélioration par rapport à Python 2 ? Si vous hésitez encore, approfondissons les autres différences pour vous guider vers le meilleur choix.
Différences entre Python 2 et Python 3
Voici un aperçu des distinctions entre Python 2 et Python 3 :
| Fonctionnalité / Aspect | Python 2 | Python 3 |
| Date de sortie | 16 octobre 2000 | 3 décembre 2008 |
| Support officiel | Le support officiel a cessé le 1er janvier 2020 | Il s'agit de la version actuellement supportée de Python |
| Performance | print est une instruction. Par exemple : print "Bonjour tout le monde !" |
Meilleures performances que Python 2 dans la plupart des tests de référence |
| Syntaxe | Syntaxe plus complexe, avec quelques redondances | Syntaxe plus simple, plus claire et facile à comprendre |
| Chaînes de caractères | Les chaînes sont stockées par défaut au format ASCII | Les chaînes sont stockées par défaut au format UNICODE |
| Division entière | La division de deux entiers donne un entier, la partie décimale est tronquée. Exemple : 5/2 == 2 | La division de deux entiers donne une valeur flottante. Exemple : 5/2 == 2.5 |
| Affichage | print est une instruction. Par exemple : print "Bonjour tout le monde !" |
print est une fonction. Par exemple : print("Hello, world!") |
| Annotations de type | Pas de support intégré pour les annotations de type | Support intégré pour les annotations de type |
| Fonctions d'itération | L'itération de fonction utilise range() qui est moins efficace que xrange() |
L'itération de fonction est effectuée avec range(), qui est plus efficace |
| Bibliothèques | De nombreuses bibliothèques ne fonctionnent pas avec Python 3 | Nombreuses bibliothèques conçues pour Python 3, sans rétrocompatibilité avec Python 2 |
| Utilisation | N'est plus largement utilisée, car son support est arrêté | Largement utilisée par les développeurs et les entreprises. C'est la version la plus populaire de Python. |
Comment migrer de Python 2 vers Python 3
Comme Python 3 offre une meilleure sécurité, de meilleures performances, une syntaxe plus claire avec moins de redondance, et qu'il s'agit de la version officiellement supportée de Python, migrer de Python 2 vers Python 3 est un choix judicieux.
Toutefois, la théorie est plus simple que la pratique. Python 3 n'est pas rétrocompatible avec Python 2. La migration d'un projet de Python 2 vers Python 3 peut s'avérer complexe et nécessite beaucoup de temps et d'efforts, selon la taille du projet.
Par exemple, chez Dropbox, où travaille Guido van Rossum, le créateur de Python, il a fallu près de trois ans pour réussir la migration de Python 2 à Python 3.
Pour migrer, commencez par bien comprendre les différences entre les deux versions. Évaluez ensuite le coût de la migration et les avantages pour votre application. Mettez en place un système de contrôle de version pour pouvoir revenir à une version stable en cas de problèmes.
Vérifiez les dépendances de votre application et leur compatibilité avec Python 3. De nombreuses bibliothèques ont évolué vers Python 3, privilégiez celles qui sont compatibles.
L'étape suivante consiste à adapter votre base de code de Python 2 à Python 3. C'est l'étape la plus ardue, mais Python fournit un outil appelé 2to3 qui aide à convertir le code de Python 2 à Python 3. Utilisez cet outil pour accélérer le processus.

Lors de la migration, testez et résolvez tous les problèmes qui surviennent. Examinez les rapports générés par 2to3, analysez les problèmes et corrigez-les. L'utilisation d'outils de test automatisés accélère le processus et garantit une bonne couverture des tests.
Tout au long du processus, documentez chaque étape. Adoptez une approche progressive. Si vous avez une base de code volumineuse, migrez les modules par itérations plutôt que de vouloir tout migrer en une seule fois.
Facteurs à prendre en compte lors du choix entre Python 2 et Python 3 pour votre projet
Plusieurs facteurs doivent être considérés avant de choisir entre Python 2 et Python 3 pour un projet :
- Niveau d'expérience : Pour les débutants en Python, il est recommandé d'utiliser Python 3, car c'est la version standard et la plus documentée. Les développeurs expérimentés peuvent choisir la version la plus adaptée au projet.
- Code hérité : Si vous travaillez sur une base de code existante en Python 2, le coût de la migration vers Python 3 peut être prohibitif. Dans ce cas, rester en Python 2 peut être la meilleure option.
- Compatibilité des bibliothèques : Certaines anciennes bibliothèques Python 2 ne sont pas entièrement compatibles avec Python 3. Si votre projet dépend de ces bibliothèques, il peut être préférable d'utiliser Python 2.
- Performance : Python 3 offre de meilleures performances. Pour les applications exigeantes en termes de performance, Python 3 est le choix idéal. C'est pourquoi des entreprises comme Instagram et Dropbox utilisent cette version.
- Pérennité : Python 2 n'est plus supporté depuis 2020. Python 3 est la version la plus sûre et la plus évolutive à long terme.
En général, il est préférable d'utiliser Python 3 car il s'agit de la version officiellement supportée, et qu'elle offre de nombreux avantages en termes de développement et de performance.
N'envisagez Python 2 que pour des cas très spécifiques, comme la maintenance de projets existants avec un code étendu en Python 2, ou pour des projets ayant des contraintes qui le rendent idéal.
Conclusion
En tant que développeur Python, la majorité de mes projets ont été réalisés avec Python 3. Sa conception améliorée, ses meilleures performances, sa sécurité accrue et sa syntaxe épurée avec moins de redondance font de Python 3 le meilleur choix.
Python 3 est la version officiellement supportée et l'avenir du langage. Utilisez Python 3 pour vos projets et pour apprendre à coder.
Découvrez ensuite comment vérifier votre version de Python sur Windows, Linux et macOS.