Accès rapide :
Prologue
L'histoire de Python en quelques dates
Python 2 VS Python 3
2to3 : un outil de migration de Python2 vers Python3
Faites attention aux informations disponibles sur Internet
Etendue des possibilités de Python
Bienvenue dans mon cours/tutoriel sur le langage de programmation Python. Comme vous allez vite vous en rendre compte, celui-ci commence à être assez complet. Pour en arriver à ce résultat, il m'a fallu de nombreux mois de travail, mais j'ai aussi essayé de tenir compte de tous vos avis, remarques et corrections. Afin de continuer à faire progresser ce cours, je vous encourage à me communiquer toute information utile à son amélioration. Pour ce faire, vous pouvez cliquer sur le bouton rouge « Bug » situé sur la droite de votre écran ou m'envoyer un email (mon adresse se trouve en bas, dans le pied de page).
Je vous souhaite un très bon apprentissage de Python et merci de votre fidélité.
Dominique
Voici résumé, en quelques dates clés, l'histoire de Python.
1989 - Guido Van Rossum, un développeur Néerlandais commence à travailler sur un nouveau langage de programmation en profitant d'une semaine de vacances. Il profite ensuite de son temps libre pour poursuivre le développement de son langage qu'il nomme Python en hommage à la série « Monty Python's Flying Circus ».
1991 - Le langage est suffisamment abouti pour proposer une première version publique dès le mois de février : elle est versionnée 0.9.0. Le langage commence à être adopté par certains projets. Tirant son inspiration de nombreux langages de programmation (et notamment ABC, Modula-3 et le langage C) ainsi que de quelques outils Unix, il permet principalement, à l'époque, d'automatiser des tâches diverses en « administration système ».
1995 - La première version de la librairie NumPy
est proposée. Cette librairie propose des opérations de calculs vectoriels et
matriciels. Elle a su s'imposer comme étant une librairie majeure dans l'écosystème Python.
2000 - Le langage continu à évoluer pour atteindre la version 2.0.0. Il intègre de plus en plus de modules de codes (de librairies) permet de traiter divers sujets : réseaux, accès aux bases de données, parsing de fichiers... Cette version 2.x va rester longtemps incontournable.
2001 - La PSF (Python Software Foundation) est créée. Il s'agit d'une association à but non lucratif qui devient propriétaire des codes sources
de Python. Elle a désormais la responsabilité de faire évoluer le langage. Pour ce faire, elle définit des PEP (Python Enhancement Proposal) qui
définissent le périmètre de chaque évolution.
Cette année voit aussi apparaître la première version de la librairie SciPy
. Il s'agit d'une surcouche à NumPy
proposant de
très nombreux algorithmes scientifiques.
2004 - La version 2.4 du langage est proposée. La librairie continue à s'étoffer.
2005 - La première version du framework Web Django apparaît. Python est désormais lourdement armé pour prendre en charge les développements Web.
2006 - La version 2.5 du langage est à son tour proposée avec, encore une fois, de nombreuses nouveautés. La PEP 3000 commence à être examinée (nous allons y revenir).
2008 - Cette fin d'année (décembre) est charnière dans l'histoire de Python. Effectivement, il est temps de commencer à tourner la page de Python 2.x
(mais cela va être long ... très long). De nombreux reproches ont été faits à Python. Afin de proposer un langage plus moderne et plus « propre »
(même si certains ne seraient pas d'accord sur ce point), une rupture de compatibilité est nécessaire. Un programme écrit pour Python 2.x ne s'exécutera plus
forcément en Python 3. Le périmètre de Python 3 est définie par la PEP 3000,
initiée en 2006. Afin de laisser du temps aux développeurs de migrer leurs applications Python 2.x en Python 3.0, une période de grâce est annoncée :
initialement le support Python 2.x devait se terminer aux alentours de 2015.
Simultanément, la version 2.6 de Python 2 est livrée : elle intègre des éléments censés permettre un passage plus en douceur vers Python 3.
2009 - Suite aux travaux du projet PyQt
, une nouvelle version « open source » d'un binding Python-Qt apparaît : son nom, PySide
(aujourd'hui devenu PySide2). Il est maintenant possible de réaliser des interfaces graphiques très sophistiquées et performantes en Python.
Pour rappel, Qt
est une librairie C++ de mise en oeuvre d'interfaces graphiques : il s'agit sans aucun doute de la plus aboutie, tous langages
de programmation confondus. PySide
permet donc d'interfacer du code natif Qt avec un programme Python.
2010 - Python 2.7 est officiellement livré. De mon point de vue, cela a contribué à faire que personne ne s'est trop affolé pour migrer les applications Python 2.x. Il faut comprendre que si vous avez développé un très gros programme Python, le réécrire pour une nouvelle version de Python qui fonctionne différemment, ne sera pas gratuit : il faut investir beaucoup de temps et d'énergie pour recoder l'application et vérifier que ce nouveau programme fonctionne correctement et sans régression dans un environnement Python 3. Du coup, si la branche 2.x est maintenue et continue à évoluer fonctionnellement, pourquoi se compliquer la vie ? En parallèle de ce problème, il faut aussi comprendre qu'on ne peut faire évoluer notre code Python 2.x que à la condition que toutes les autres librairies utilisées par votre programme aient, elles aussi, été migrées en Python 3.x. Or, là aussi ça a été compliqué.
2015 - La quantité de projets Python ayant basculés en Python 3.x est marginale. Un report pour la mort de Python 2.x est nécessaire :-( Pendant ce temps, la branche 3.x se développe fortement avec de nouvelles constructions syntaxiques et des nouveaux modules de code. En termes de possibilités offertes, l'écart entre la branche 2.x et 3.x se creuse progressivement.
2018 - Guido Van Rossum annonce en mars que la fin du support Python 2.x par la PSF est définitivement fixée au 01/01/2020 (voir son message).
2019 - La version 3.8 de Python est annoncée. Guido Van Rossum se retire de ses mandats au sein de la PSF et finit par prendre sa retraite.
1er janvier 2020 - RIP Python 2.x ! La branche de code Python 2.x est gelée et tout support est officiellement terminé. Un dernier installeur Python 2.7 doit être mis en ligne dans les semaines suivantes.
Donc, vous l'avez compris, il y a eu durant de nombreuses années une dualité entre Python 2.x et Python 3.x. Ce qui m'amène à préciser quelques points.
Si vous devez migrer du code de Python2 vers Python3, un outil est proposé au sein de l'environnement d'exécution. Son nom : 2to3.py
.
Il est fourni sous forme d'un script localisé dans le dossier $PYTHON_HOME/Tools/scripts/2to3.py
. Il est constitué de plusieurs
« correcteurs », chacun d'eux traitant d'une problématique durant la migration.
Les changements de comportement entre Python 2 et Python3 sont parfois assez subtiles. Bien que relativement complet, il est rare (sur des programmes conséquents) que tout se passe parfaitement. Une revalidation complète de votre programme sera nécessaire ce qui vous permettra certainement de corriger quelques derniers points.
L'histoire de Python est longue. Depuis des décennies de très nombreuses personnes vous font partager leur passion pour Python au travers de très grand nombres d'exemples de code sur Internet. Un très grand nombre d'entre eux ont été écrits durant l'ère Python 2 et ils seront encore présents sur Internet durant plusieurs années.
Il faudra donc faire attention quand vous trouverez un bout de code qui semble faire ce que vous souhaitez : vous devrez toujours vérifier quelle est la version de Python visée par chaque exemple de code. Si vous trouvez un exemple de code Python 2, quelques modifications pourront donc être nécessaires.
Pour ce qui est de la documentation officielle, elle existe pour chaque version de Python. Vous la trouverez sur le site https://docs.python.org
Dans le bandeau supérieur, à gauche se trouve une liste déroulante : vérifier à toujours être sur la version souhaitée de Python !
Python est donc un langage assez polyvalent. Il permet notamment d'adresser les types de développements suivants :
L'apprentissage de la programmation : Python est certainement un des langages de programmation les plus simples à prendre en main (comparé à du C++, par exemple). C'est ce qui fait qu'il est aujourd'hui souvent proposé comme premier langage de programmation par les lycées ou autre.
Le scripting : il est très simple, en Python, de définir des scripts d'automatisation de tâches diverses et variées. C'est pour cette raison que de nombreux administrateurs système se mettent à Python.
Le développement Web : grâce au framework Django
, le développement d'application Web est devenu très simple et efficace en Python.
Le calcul scientifique : de par sa simplicité et de par la qualité des libriairies NumPy
, SciPy
,
MatPlotLib
et Pandas
, python s'est imposé comme étant l'un des meilleurs langages dans ce domaine.
Le Big Data et le Machine Learning : grâce à de nombreux logiciels orientés sur ces domaines, Python tend à être « Le Langage » prédestiné sur ces sujets.
Programmation en Systèmes Embarqués : la plate-forme « Raspberry Pi » préconisant Python comme langage de programmation principal, a propulsé Python comme étant le langage à la mode sur ces sujets aussi.
Mais Python peut aussi permettre le développement de nombreux autres types d'applications : d'application graphiques, application de gestions...
Améliorations / Corrections
Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.
Emplacement :
Description des améliorations :