Python 2 ou Python 3: quelle version apprendre?

Est-ce que je dois apprendre Python 2.x ou alors Python 3.x?

C’est la première question qui vient à l’esprit lorsqu’on souhaite apprendre Python.

Dans cet article, je vais vous donner le contexte qui se cache derrière cette question et bien sur je vous donnerai à la fin la version qu’il faut apprendre (un peu de suspens tout de même).

Commençons par un brin d’histoire.

Point historique du langage de Python

Python 3.0 a été publié en 2008 (cela nous rajeunit pas – cela fait déjà 10 ans !)

Le 3 décembre 2008, Python a sorti sa version 3.0. Essayons tout d’abord de comprendre pourquoi Python 3 est né.
A l’époque, il y avait de nombreux bugs que les gens continuaient à avoir en raison de l’utilisation surchargée du type de données str(ing) dans Python 2. 

A l’époque on savait que la popularité de Python était en hausse et on espérait que sa croissance continuerait (ce qu’elle a d’ailleurs fait jusqu’à maintenant). Mais cela signifiait aussi que pour corriger les erreurs de conception et aider à maintenir la popularité du langage Python, il fallait faire un gros changement.

Le plus tôt sera le mieux…Python 3 est donc né pour corriger ce défaut en séparant clairement les données textuelles des données binaires.

Évidemment, il faudra des décennies pour voir si le code Python 3 dépasse le code Python 2 en termes de lignes de code. (réflexion de l’époque 🙂 )

La transition était structurée et on pensait que la communauté accompagnerait le mouvement en quittant Python 2. Mais cela s’est avéré ne pas être le cas. Depuis, on assiste à une transition légère entre Python 2 et Python 3 (on peut même parler de co-habitation).

 

Conséquences du passage Python 2 –> 3

Par conséquent, pour tous ceux qui utilisaient Python 2.x à ce moment précis, la migration de leur projet vers la version 3.x nécessitait de grands changements.

Ce changement fut très controversé. De nombreux projets ont résisté à l’envie de migrer vers Python 3, en particulier dans la communauté scientifique Python. Il a fallu deux ans à NumPy (la principale librairie numérique) pour publier sa première version 3.x, après quoi d’autres projets ont commencé à publier des versions compatibles 3.x dans les années suivantes.

En 2012, beaucoup de librairies commençaient à avoir un support pour 3.x, même si la plupart étaient encore en 2.x. Au fil du temps, des outils ont été publiés qui facilitaient le portage du code, mais il y avait toujours une grande résistance à migrer.

Dans les quelques années qui ont suivi, plusieurs outils ont été lancés pour faciliter la transition des anciennes bases de code de Python 2 vers Python 3. A l’origine, Python avait programmé la date de fin de vie de Python 2.x pour 2015, mais en 2014 ils ont annoncé qu’ils allaient prolonger cela de 5 ans jusqu’en 2020, en partie pour les utilisateurs qui ne peuvent pas encore migrer vers Python 3.

 

Qu’en est-il de maintenant?

Aujourd’hui, il existe très peu de librairies qui ne supportent pas Python 3. Python 3 Readiness montre que 341 des 360 meilleurs librairies Python supportent la version 3.x.

En outre, de nombreuses librairies annoncent la fin du support pour 2.x. Python 3 Statement est un projet dans lequel de nombreuses librairies majeurs (scientifiques) s’engagent à arrêter de soutenir 2.x en 2020 voir plus tôt.

Récemment, le populaire framework web Django a annoncé que sa nouvelle version 2.0 ne supporterait pas Python 2.x.

 

Mais alors pourquoi la question du choix de version de Python persiste-t-elle encore?

Il y a beaucoup de vieilles formations gratuites en ligne pour apprendre Python qui sont basées sur Python 2, y compris la plupart des MOOC sur Coursera, Udemy ou edX.

Ajouté à cela, le très populaire «Learn Python the Hard Way» de Zed Shaw qui a été écrit en Python 2.x et n’a pas été mis à jour depuis. Son auteur semble d’ailleurs avoir un avis controversé sur Python 3, je pense qu’il s’agit d’une excuse facile car il a juste la flemme de reprendre son cours.

En bref, les personnes opposés à Python 3 se comptent maintenant sur les doigts d’une main.

 

 

Au final, quelle version dois-je apprendre?

Python 2 ou Python 3: quelle version apprendre?

Pourquoi je dois apprendre Python 3?

Personnellement j’utilise exclusivement Python 3.x et je n’ai que très rarement rencontré des problèmes de compatibilité.

Et si j’ai besoin d’exécuter du code nécessitant le support de Python 2, j’utilise virtualenv qui me permet de créer instantanément un environnement 2.x sur ma machine pour exécuter le morceau de code en question.

Python 3.x est le futur et avec le support de Python 2.x qui s’affaiblit, vous devriez rentabiliser votre temps et apprendre la version qui vous aidera dans le futur, à savoir Python 3. C’est pourquoi j’utilise Python 3 dans toutes mes formations.

 

Pourquoi je dois apprendre Python 2?

En fait, tu ne devrais pas. Très prochainement, il n’y aura plus de correctifs de sécurité ou de bugs pour Python 2.x. Ton temps est précieux, utilise le pour apprendre 3.x.

Dans le cas peu probable où vous finissez par utiliser une base de code Python 2, des outils tels que python-future vous faciliteront l’utilisation de Python 3.

 

 

J’espère que cela vous a aidé à comprendre ce sujet controversé et à prendre votre décision d’apprendre Python 3. Mon Coach Data enseigne la Data Science en utilisant Python (3.x, bien sûr!).