Python 2 est sorti en 2000 et a longtemps été l'outil principal de millions de développeurs dans le monde. En 2008, une version radicalement nouvelle a vu le jour — Python 3, qui a apporté des améliorations majeures à l'architecture du langage.
Python 3 n'était pas totalement compatible avec Python 2 au départ, ce qui a suscité des débats dans la communauté des développeurs et a ralenti son adoption massive. Cependant, après plus de 15 ans, Python 3 est devenu la norme absolue du secteur.
L'histoire de l'arrivée de Python 3
La création de Python 3 était motivée par la nécessité de corriger des défauts architecturaux fondamentaux de Python 2 qui freinaient l'évolution du langage :
Amélioration de la prise en charge d'Unicode — Python 3 gère les chaînes Unicode par défaut, ce qui est essentiel pour les applications multilingues modernes.
Optimisation de la gestion des types de données — une séparation plus claire entre les octets et les chaînes, éliminant les ambiguïtés de typage.
Uniformisation de la syntaxe et de la sémantique — suppression des incohérences du langage pour une structure plus logique et prévisible.
Différences clés entre Python 2 et Python 3
Gestion du texte et des encodages
Python 2 :
print type("texte") # <type 'str'>
print type(u"texte") # <type 'unicode'>
Python 3 :
print(type("texte")) # <class 'str'> - Unicode par défaut
print(type(b"texte")) # <class 'bytes'>
Python 3 prend nativement en charge Unicode, ce qui résout de nombreux problèmes d'encodage rencontrés avec Python 2.
Opérations mathématiques
Python 2 :
print 5 / 2 # 2 (division entière)
print 5.0 / 2 # 2.5 (division flottante)
Python 3 :
print(5 / 2) # 2.5 (division réelle)
print(5 // 2) # 2 (division entière)
Avec Python 3, l'opérateur / retourne toujours un résultat flottant, ce qui rend le comportement plus prévisible.
Changements syntaxiques
Fonction print :
# Python 2
print "Bonjour, le monde !"
# Python 3
print("Bonjour, le monde !")
Fonction input :
# Python 2
nom = raw_input("Entrez votre nom : ") # chaîne
age = input("Entrez votre âge : ") # exécute eval()
# Python 3
nom = input("Entrez votre nom : ") # toujours une chaîne
age = int(input("Entrez votre âge : ")) # conversion explicite
Itérateurs et générateurs
Python 2 :
range(5) # retourne une liste [0, 1, 2, 3, 4]
xrange(5) # retourne un générateur
cles = dict.keys() # retourne une liste
Python 3 :
range(5) # retourne un générateur
list(range(5)) # [0, 1, 2, 3, 4]
cles = dict.keys() # retourne une vue du dictionnaire
État actuel de la prise en charge des versions
Fin de support de Python 2
Le 1er janvier 2020, la Python Software Foundation a officiellement cessé le support de Python 2.7. Cela signifie :
- Absence de mises à jour de sécurité
- Arrêt du développement de nouvelles fonctionnalités
- Absence de correctifs pour les bugs critiques
- Fin du support par les bibliothèques principales
Développement actif de Python 3
Python 3 continue d'évoluer activement avec des mises à jour régulières :
- Python 3.12 (2023) — améliorations des performances et nouvelles fonctionnalités de typage
- Python 3.13 (2024) — compilateur JIT expérimental