Introduction

Python est un langage de programmation créé par Guido Van Rossum alors qu’il travaillait sur le système d’exploitation Amœba et qu’il souhaitait disposer d’un langage simple et puissant pour interagir avec le système.

Note

Contrairement à ce que le logo du langage et le nom de certains outils pourraient suggérer, le langage Python ne tire pas son nom d’un reptile mais des Monty Python : le célèbre groupe d’humoristes anglais qui ont débuté leur carrière au début des années 1970. Guido Van Rossum étant fan des Monty Python, il a suggéré que les exemples et les documentations devraient s’inspirer des sketchs du groupe.

Python 2 et Python 3

Comme tous les langages de programmation, Python a connu, et connaît toujours, des évolutions qui conduisent à utiliser des numéros de version. La particularité de ce langage réside dans le fait qu’il existe toujours une version 2 et une version 3 du langage en cours de développement et d’exploitation. En effet, la version 3 a conduit à impacter profondément le langage tel qu’il existait jusqu’à présent. Il a donc été décidé de développer la version 3 tout en maintenant activement la version 2.

Cette décision a parfois obligé les développeurs à faire preuve d’inventivité et de virtuosité pour écrire des bibliothèques et des systèmes compatibles à la fois pour Python 2 et pour Python 3.

Python 2 n’est plus supporté depuis janvier 2020. Pour tous les nouveaux développements et sauf contraintes majeures, il faut choisir Python 3.

Note

Ce support est donc uniquement dédié à Python 3. Il ne sera pas fait mention de Python 2 ni des différences entre les deux versions.

Lorsque vous consultez des articles en ligne sur Python, pensez à vérifier s’il ne s’agit pas d’un ancien article traitant de Python 2.

Licence logiciel

Python est distribué sous la Python Software Foundation License. Cette licence est très proche de la licence BSD tout en étant compatible avec la licence GPL de la Free Software Foundation.

Ainsi Python peut être utilisé sans difficulté aussi bien dans des logiciels libres que dans des logiciels à licence propriétaire.

Les principales caractéristiques du langage

Orienté objet

Python est un langage de programmation orientée objet. Mais comparé à d’autres langages similaires (comme Java et C#), Python n’impose pas aux développeurs de créer spécifiquement des applications en utilisant les principes de la programmation objet. Il est même possible de créer des programmes en Python en suivant une approche uniquement procédurale voire même fonctionnelle.

Courbe d’apprentissage linéaire

Cette plasticité dans l’approche du développement permet à Python de posséder une courbe d’apprentissage très linéaire. Il est possible d’apprendre rapidement les bases du langage et de réaliser des applications sans connaître nécessairement toutes les subtilités de la programmation objet. Ainsi, Python est très souvent proposé comme langage d’apprentissage de la programmation ou bien il est utilisé dans des domaines d’ingénierie autres que l’informatique.

Compilé et interprété

Python est un langage compilé et interprété. Cela signifie que le code source doit être compilé, c’est-à-dire transformé dans un langage binaire. Cependant ce langage n’est pas compréhensible directement par le processeur de la machine. Les fichiers compilés doivent donc être interprétés, c’est-à-dire lus et transformés en instructions exécutables par le processeur de la machine. Cette transformation est réalisée logiciellement par un programme que l’on nomme l’interpréteur.

Il existe des langages de programmation qui sont uniquement compilés (comme C++) et l’étape de compilation permet d’obtenir le programme binaire. Il existe des langages de programmation qui sont uniquement interprétés (comme JavaScript). Si le concepteur de Python a choisi de combiner les deux approches, c’est pour pouvoir disposer des avantages des deux approches tout en limitant leurs inconvénients respectifs. Ainsi, le programme compilé reste portable, c’est-à-dire exécutable sur des machines aux architectures différentes puisqu’il doit encore être interprété. Mais le code à interpréter est plus rapide à convertir en instructions binaires que le fichier source, ce qui permet des performances supérieures à des langages uniquement interprétés.

Note

Java et C# sont également des langages compilés et interprétés. Mais dans le cas de Python, la compilation est faite au moment du premier lancement du programme. Il n’y a pas d’étape spécifique de compilation imposée aux développeurs comme en Java et C#. Cela accroît encore la simplicité de prise en main de ce langage.

Typage dynamique

Python est un langage à typage dynamique. Cela signifie que le type d’une variable (c’est-à-dire le format des données qui peuvent être représentées par cette variable) est choisi au moment où le programme assigne une valeur à la variable. Si le programme affecte plus tard une valeurs d’un type différent à la même variable, celle-ci donne l’impression de changer de type.

Python se distingue de langages tels que C, C++, Java ou C# qui sont des langages dit à typage fort. Il se rapproche de JavaScript qui fonctionne également suivant le principe du typage dynamique. Le typage dynamique offre une plus grande souplesse dans le développement et permet de conserver une relative simplicité dans la grammaire du langage. Cependant, cela se fait au détriment de la possibilité pour le compilateur d’aider le développeur à détecter des problèmes éventuels et ainsi éviter des bugs à l’exécution. En pratique, cela ne signifie absolument pas que les applications développées en Python souffrent de plus de bugs, il s’agit juste d’une approche différente du développement qui permet aux développeurs de moins faire porter leurs efforts sur la rigueur du typage mais un peu plus sur la rigueur de l’utilisation des variables.

Les domaines d’application

Python est partout ! Comme il n’est pas nécessaire d’être un expert en programmation pour pouvoir écrire des applications complexes, Python est utilisé bien au-delà de son domaine de départ (l’interaction avec un système d’exploitation avec la réalisation d’un shell). Ainsi, on trouve des programmes en Python pour le calcul scientifique, les mathématiques, l’électronique, la robotique, l’intelligence artificielle…

Mais il ne faut surtout pas en déduire que Python est un langage pour les non informaticiens, en effet dans ces usages les plus avancés, on le trouve également au cœur de certains systèmes d’information dans les entreprises, dans la réalisation de sites Web et d’API Web, dans les services exécutés par les systèmes d’exploitation ou encore dans le domaine de la sécurité informatique. Comme l’interpréteur Python peut s’intégrer dans des applications écrites avec d’autres langages, Python est aussi très vite devenu un langage très utile pour offrir une interface de programmation (API) afin de créer plus facilement des extensions pour des logiciels propriétaires ou pour des logiciels libres.

Les différentes implémentations de Python

Il existe plusieurs implémentations de l’interpréteur Python.

CPython

Probablement le plus célèbre et le plus utilisé, il s’agit de l’interpréteur d’origine écrit en langage C. Il est surtout choisi pour ses performances d’exécution et pour sa simplicité d’installation et d’intégration.

PyPy

Il s’agit d’un interpréteur Python écrit en… Python ! Ce qui peut paraître comme un défi ou une plaisanterie de développeurs est en fait extrêmement utile à la communauté. En effet, il est plus facile pour un développeur Python de modifier le code source d’un interpréteur écrit en Python que celui d’un interpréteur écrit en C. L’objectif de l’interpréteur PyPy n’est donc pas la performance mais l’extrême portabilité et la possibilité d’expérimenter de façon relativement simple des évolutions du langage.

Jython

Cet interpréteur s’exécute dans une machine virtuelle Java. Son principal atout est de permettre l’interaction, au sein d’une même machine virtuelle Java, de code écrit en Java avec du code écrit en Python.

IronPython

Cet interpréteur génère du code compatible avec .Net. Son principal atout est de permettre d’écrire des programmes en Python pour la plate-forme .Net de Microsoft et d’interagir facilement avec du code écrit en C#.

Communauté et organisation

Comme beaucoup de communautés dans les logiciels libres, la communauté Python est hétéroclite et foisonnante. Il existe cependant une organisation dédiée à la gestion de l’évolution du langage.

La communauté a mis en place le système des Python Enhancement Proposals (PEP). Il s’agit de documents qui sont soumis par n’importe qui et qui font l’objet d’une relecture par les membres les plus influents de la communauté et notamment ceux qui, par leur expérience et leurs contributions, ont le droit de modifier le code source considéré comme faisant référence. Une PEP est identifiée par son numéro. Il peut s’agir d’un document informationnel ou d’une proposition d’évolution du langage. Par exemple, la PEP 8 est bien connue des développeurs car elle décrit le format (notamment l’indentation et les espaces) à respecter dans un fichier source Python. Mais on trouve aussi des documents plus généraux comme la PEP 20, le Zen de Python, qui résume les principes qui devraient guider tous les développeurs Python. Toutes les évolutions du langage passent par la rédaction et la validation d’une PEP.

Note

Le créateur du langage, Guido Van Rossum, possédait jusqu’en 2018 le titre de BDFL : Benevolant Dictator For Life (dictateur bienveillant à vie). Cela signifiait qu’il veillait au respect de l’esprit dans lequel le langage a été conçu. Il était notamment un relecteur très actif des Python Enhancement Proposals.