Qu’est-ce que le langage de programmation Python ?

Python est un langage de programmation gratuit et open-source créé par Guido van Rossum en 1991. Il tire son nom du cirque volant des Monty Python.

C’est un langage de programmation interprétatif, ce qui signifie qu’il n’a pas besoin d’être compilé pour fonctionner. Une application appelée « interpréteur » vous permet d’exécuter le code Python sur n’importe quel ordinateur. Cela vous permet de voir immédiatement les résultats d’une modification du code. Cependant, cela rend le langage plus lent qu’un langage compilé comme le C.
Python, en tant que langage de programmation de haut niveau, permet aux programmeurs de se concentrer sur ce qu’ils font plutôt que sur la manière dont ils le font. Par conséquent, l’écriture de programmes prend moins de temps que dans un autre langage. C’est un excellent langage pour les débutants.

Quels sont les principaux avantages de la programmation Python ?

La popularité de Python peut être attribuée à un certain nombre d’avantages qui profitent aussi bien aux débutants qu’aux experts. Tout d’abord, il est simple à apprendre et à utiliser. Il dispose d’un ensemble limité de fonctionnalités, ce qui permet de créer des programmes rapidement et avec un minimum d’efforts. En outre, sa syntaxe est conçue pour être lisible et simple.

Un autre avantage de Python est son utilisation répandue. Ce langage de programmation est compatible avec tous les principaux systèmes d’exploitation et plateformes informatiques. De plus, bien qu’il ne soit clairement pas le langage le plus rapide, sa polyvalence compense sa lenteur.

Enfin, même s’il est principalement utilisé pour le scripting et l’automatisation, ce langage est également utilisé pour créer des logiciels professionnels de grande qualité. Python est utilisé par un grand nombre de développeurs pour créer des logiciels, qu’il s’agisse d’applications ou de services web.

Quelles sont les différences entre Python 2 et Python 3 ?

Python est divisé en deux versions : Python 2 et Python 3. Il existe de nombreuses différences entre ces deux versions. Python 2.x est la version précédente, qui continuera à être supportée et à recevoir des mises à jour officielles jusqu’en 2020. Elle continuera, sans aucun doute, à exister à titre non officiel après cette date.

Python 3.x est la version la plus récente du langage. Elle ajoute un grand nombre de fonctionnalités nouvelles et utiles, comme un meilleur contrôle de la concurrence et un interpréteur plus efficace. Cependant, en raison d’un manque de bibliothèques tierces, l’adoption de Python 3 a longtemps été ralentie. Un grand nombre d’entre elles n’étaient compatibles qu’avec Python 2, ce qui a rendu le passage difficile. Néanmoins, ce problème est déjà largement résolu, et il existe peu de raisons impérieuses de continuer à utiliser Python 2.

Python est un langage de programmation pour le big data et l’apprentissage automatique.

Les applications les plus courantes de Python sont le scripting et l’automatisation. En effet, ce langage permet d’automatiser les interactions avec les navigateurs en ligne et les interfaces graphiques des applications.

Cependant, le scripting et l’automatisation sont loin d’être les seules fonctionnalités de ce langage. Il est également utilisé pour la programmation d’applications, le développement de services Web et d’API REST, ainsi que pour la métaprogrammation et la génération de code.

En outre, ce langage de programmation est utilisé dans les domaines de la science des données et de l’apprentissage automatique. Avec l’essor de l’analyse des données dans tous les secteurs, il est également devenu l’une de ses applications les plus courantes.

La grande majorité des bibliothèques utilisées dans la science des données et l’apprentissage automatique fournissent des interfaces Python. Par conséquent, ce langage est devenu l’interface de commande de haut niveau la plus utilisée pour les bibliothèques d’apprentissage automatique et autres algorithmes numériques. De nombreux ouvrages d’introduction sont disponibles sur internet.

Python est utilisé par les Data Scientist pour diverses raisons.

Python est le langage de programmation le plus populaire pour la science des données. Parce qu’il est simple, lisible, propre, polyvalent et interopérable avec un large éventail de plateformes. Ses nombreuses bibliothèques, notamment TensorFlow, Scipy et Numpy, lui permettent d’effectuer un large éventail de tâches.

Selon une enquête menée par O’Reilly en 2013, 40 % des scientifiques de la donnée utilisent Python au quotidien. En raison de sa syntaxe facile, il peut être utilisé par ceux qui n’ont pas nécessairement une expérience d’ingénieur.

Il permet un prototypage rapide, et le code peut être exécuté sur n’importe quelle plateforme : Windows, macOS, UNIX, Linux… En raison de sa flexibilité, il peut gérer le développement de modèles de Machine Learning, l’exploration de données, la classification et une variété d’autres tâches plus rapidement que d’autres langages.

Scrapy et BeautifulSoup sont deux bibliothèques qui aident à l’extraction de données sur Internet, tandis que Seaborn et Matplotlib aident à la visualisation des données. Tensorflow, Keras et Theano, quant à eux, permettent de créer des modèles d’apprentissage profond, tandis que Scikit-Learn facilite la création d’algorithmes d’apprentissage automatique.

Python avec le Big Data : une liste des meilleures bibliothèques et paquets

Les nombreux packages et bibliothèques de science des données de Python lui ont valu le titre de meilleur langage de programmation pour le Big Data. Voici les plus populaires.

Pandas

Pandas est l’une des bibliothèques scientifiques de référence les plus connues. Elle a été créée par des scientifiques des données qui connaissaient bien R et Python, et elle est utilisée par un grand nombre de scientifiques et d’analystes.

Elle possède de nombreuses fonctionnalités intégrées qui sont très utiles. Il est possible, par exemple, de lire des données provenant de diverses sources, de créer d’énormes cadres de données à partir de ces sources, et de réaliser des études ad hoc en fonction des requêtes auxquelles on souhaite obtenir des réponses.

Les fonctions de visualisation vous permettent de créer des graphiques à partir des résultats de vos études ou de les convertir au format Excel. Il peut également être utilisé pour manipuler des tableaux numériques et des séquences temporelles.

Agate

Agate est une bibliothèque Python qui a été développée pour résoudre des problèmes d’analyse de données. Elle est plus récente que Pandas. Elle dispose de fonctionnalités telles que l’analyse et la comparaison de tableaux Excel, ainsi que la possibilité d’effectuer des calculs statistiques sur une base de données.

Dans l’ensemble, apprendre à maîtriser Agate est plus facile que d’apprendre à maîtriser Pandas. Entre autres, ses fonctions de visualisation des données vous permettent de voir les résultats de vos études rapidement et facilement.

Bokeh

Bokeh est un excellent outil pour visualiser de grandes quantités de données. Il peut être utilisé en conjonction avec Agate, Pandas et d’autres bibliothèques d’analyse de données.

Il est également possible de l’utiliser avec un Pyton pur. Cet outil vous permet de créer de superbes graphiques et visualisations sans avoir besoin de coder davantage.

NumPy

NumPy est un module Python permettant d’effectuer des calculs scientifiques. Il est idéal pour les opérations impliquant l’algèbre linéaire, les transformées de Fourier ou le calcul de nombres aléatoires.

Il peut être utilisé comme un conteneur de données générique multidimensionnel. En outre, il s’intègre facilement à une variété de bases de données différentes.

Scipy

Scipy est une bibliothèque dédiée aux calculs techniques et scientifiques. Elle dispose de modules pour les tâches de science des données et d’ingénierie telles que l’algèbre, l’interpolation, la FFT et le traitement des signaux et des images.

Scikit-learn

Scikit-learn est particulièrement utile pour les algorithmes tels que les forêts de décision, le gradient boosting et les k-moyennes, qui sont utilisés pour la classification, la régression et le clustering.

Cette bibliothèque Python d’apprentissage automatique est utile en conjonction avec d’autres bibliothèques Python telles que NumPy et SciPy.

PyBrain

Python-Based Reinforcement Learning, Artificial Intelligence, and Neural Network Library sont tous des acronymes pour PyBrain. Comme son nom l’indique, il s’agit d’une bibliothèque qui fournit des algorithmes basiques mais puissants pour les tâches d’apprentissage automatique.

Vous pouvez également l’utiliser pour tester et évaluer des algorithmes en les plaçant dans une variété d’environnements prédéfinis.

TensorFlow

TensorFlow est une bibliothèque d’apprentissage automatique créée par Google Brain. Ses graphiques de flux de données et son architecture flexible lui permettent d’effectuer des opérations et des calculs de données à l’aide d’une seule API sur plusieurs CPU ou GPU à partir d’un PC, d’un serveur ou même d’un appareil mobile.

Cython, par exemple, est une bibliothèque Python qui permet de transformer le code pour qu’il s’exécute dans un environnement C, réduisant ainsi le temps d’exécution. PyMySQL, quant à lui, vous permet de vous connecter à une base de données MySQL, d’extraire des données et d’exécuter des requêtes. BeautifulSoup est capable de lire des données XML et HTML. Enfin, le notebook iPython permet une programmation interactive.

Google Atheris est un outil gratuit à code source ouvert permettant de localiser les problèmes liés à Python.

Les spécialistes de la sécurité de Google ont « ouvert » l’outil Atheris. Celui-ci vous permet de trouver des failles de sécurité et des vulnérabilités dans le code Python afin de pouvoir les corriger avant qu’il ne soit trop tard.

Cet outil est basé sur la méthode du « fuzzing ». Cette idée consiste à alimenter une application avec une énorme quantité de données aléatoires, puis à analyser les résultats pour rechercher d’éventuels plantages ou anomalies. Les développeurs peuvent alors rechercher des problèmes dans le code de l’application.

Ce nouvel outil rejoint la liste des « fuzzers » open-source de Google qui sont utilisés depuis 2013 : OSS-Fuzz, Syzkaller, ClusterFuzz, Fuzzilli et BrokenType. Ces méthodes précédentes permettaient en revanche de détecter des failles dans des programmes en C ou C++.

Malgré le fait que Python soit désormais le troisième langage de programmation le plus populaire, selon l’indice TIOBE, Google a répondu à un besoin croissant avec Atheris. L’outil, qui a été développé pour la première fois lors d’un hackathon interne en octobre 2020, permet de fuzzer le code Python 2.7 et 3.3+ ainsi que les extensions natives créées à l’aide de CPython.

Il est toutefois recommandé de l’utiliser avec du code Python 3.8 ou supérieur, car les nouvelles fonctionnalités du langage permettent à Atheris de trouver davantage de problèmes. Le code source d’Atheris est disponible sur GitHub ou PyPi.

Python est toujours le langage de programmation le plus populaire en 2021.

Les langages de programmation sont de plus en plus nombreux, ce qui complique la tâche des développeurs qui doivent décider lequel apprendre pour faire avancer leur carrière.

Dans son nouveau rapport intitulé « Where Programming, Ops, AI, and the Cloud are Headed in 2021 », O’Reilly révèle quels langages seront les plus populaires en 2021. Les conclusions des analystes sont basées sur les données de formation en ligne d’O’Reilly, ainsi que sur celles de ses partenaires et des événements virtuels.

Python reste le langage de programmation le plus populaire cette année. L’intérêt des développeurs a également augmenté de 27 % par rapport à l’année précédente.

Cet enthousiasme semble être principalement dû aux avantages de Python pour l’apprentissage automatique. En effet, l’utilisation de la bibliothèque scikit-learn a augmenté de 11 %. Le framework Python PyTorch, qui est utilisé pour l’apprentissage profond, a vu son utilisation augmenter de 159 %.

D’autres langages, en revanche, gagnent en popularité. Par rapport à 2020, l’utilisation de JavaScript a augmenté de 40 %, celle de C de 12 % et celle de C++ de 10 %. D’autres langages de programmation moins connus, tels que Go, Rust, Ruby et Dart, sont en plein essor.

Rust pourrait devenir le langage de programmation de choix pour la programmation de systèmes, comme la création de nouveaux systèmes d’exploitation et d’outils pour les opérations en nuage. Go, quant à lui, s’est imposé comme un langage standard pour la programmation concurrente.

Une autre tendance identifiée par O’Reilly est la popularité de la programmation « low-code » ou « no-code », qui permet aux personnes ayant peu ou pas d’expérience en programmation informatique de créer des programmes en utilisant des outils simples et des interfaces graphiques.

Les développeurs professionnels, quant à eux, ne risquent pas de se retrouver en prison pour l’instant. Pour créer et maintenir les nouveaux langages de codage, les bibliothèques et les outils qui sont utilisés dans ce type de programmation, des développeurs expérimentés seront nécessaires.

L’intelligence artificielle (IA) et l’apprentissage machine (ML) sont également en plein essor. L’intérêt des développeurs pour l’IA a augmenté de 64 %, contre 14 % pour le ML. En ce qui concerne le traitement du langage naturel, il a augmenté de 21 %. TensorFlow est la plateforme d’apprentissage automatique la plus populaire, avec une augmentation de l’intérêt de 6 points de pourcentage d’ici à 2020.

Un nombre croissant de développeurs souhaitent apprendre à utiliser le cloud computing. En un an, l’intérêt pour AWS a augmenté de 5 %. Par conséquent, le cloud d’Amazon reste le plus populaire, mais l’intérêt pour Microsoft Azure a augmenté de 136 %.

L’augmentation était de 84 % lorsqu’il s’agissait de Google Cloud. Cette tendance montre que les entreprises migrent de plus en plus leurs données et leurs applications vers le cloud.

Enfin, l’utilisation de la formation en ligne a augmenté de 96 %. Ce n’est pas surprenant, étant donné que la pandémie de COVID-19 empêche les formes actuelles. L’utilisation de livres de formation a également augmenté de 11 %, contre 24 % pour les vidéos éducatives…

Pour la première fois, Python va dépasser Java et C dans l’indice TIOBE.

TIOBE publie chaque mois un classement des langages de programmation les plus populaires. Ce classement mensuel vous permet de suivre l’évolution des tendances dans le monde du codage au fil du temps.Pour chaque langage de programmation, le système de pourcentage est basé sur le volume des recherches effectuées sur Bing, Amazon, YouTube, Wikipedia, Google, Yahoo et Baidu.

Le langage C, avec un score de 12,54 %, est en tête du classement en juin 2021. Cette note, en revanche, représente une baisse de 4,65 % par rapport à juin 2020.

Python, quant à lui, occupe la deuxième place avec un score de 11,84 %. La différence entre ces deux langages n’est donc que de 0,7 %. La devise de Python a augmenté de 3,48 % au cours des deux derniers mois.

Java est désormais en troisième position, avec un score de 11,54 %, soit 4,56 % de moins qu’en juin 2020. À l’époque, Java occupait la deuxième place.

Python, selon Paul Jansen, PDG de TIOBE Software, prendra très bientôt la première place du classement. Cette ascension pourrait avoir lieu en juillet 2021, lorsque l’indice TIOBE fêtera son 20e anniversaire.

Seuls C et Java ont occupé la première position au cours des deux dernières décennies. La domination de Python serait donc un moment décisif dans l’histoire de l’informatique…

Depuis juin 2020, le reste du classement est passé de la quatrième à la huitième place : C++, C#, Visual Basic, JavaScript et PHP. L’assemblage reçoit une note de 2,05 pour cent à la neuvième place. Il s’agit d’une augmentation de 1,09 % par rapport à juin 2020, lorsque le langage était classé 14e.

SQL complète le top 10 avec une note de 1,88 %. Par rapport à juin 2020, il s’agit d’une augmentation de 0,15 %.

En dehors du top 10, Visual Basic classique a gagné huit places en un an. Groovy, à la 12e place, a gagné 19 places, tandis que Fortran, à la 17e place, en a gagné 20. R et Swift, en revanche, ont tous deux perdu cinq places et sont désormais classés respectivement 14 et 16. MATLAB, qui a perdu quatre places, et Go, qui en a perdu huit, sont tous deux sortis du top 20.

Dart, Kotlin, Julia, Rust, TypeScript et Elixir font partie des langages d’avenir. Pour l’instant, ces nouveaux langages sont encore loin du sommet et n’ont pas beaucoup évolué dans le classement au cours de l’année écoulée.

Python 4.0 pourrait ne jamais voir le jour, selon son créateur, Guido van Rossum.

Selon Guido Van Rossum, le créateur de Python, la version 4 du langage pourrait ne jamais voir le jour. Ceci est principalement dû aux nombreuses difficultés rencontrées lors de la conversion de Python 2.0 à Python 3.0 en 2008.

Interrogé à ce sujet lors d’une interview accordée à Microsoft Reactor, M. Van Rossum a déclaré que ni lui ni les membres de l’équipe principale de développement de Python ne sont motivés par la sortie de la version 4.0 en raison des nombreux bogues découverts lors de la dernière mise à jour majeure.

Comme Python 3 est incompatible avec Python, les développeurs qui ont construit des bibliothèques logicielles basées sur Python 2 ont été incapables de les mettre à jour vers Python 3. Il s’en est suivi une longue période de migration qui a duré plusieurs années et a laissé un souvenir amusant au créateur du langage. Rappelons que Python 2 a atteint la fin de son cycle de vie en avril 2020 avec la version 2.7.18.

La seule raison pour laquelle Python 4.0 verrait le jour serait une amélioration significative en termes de compatibilité avec le C. Dans ce cas, des mises à jour seraient nécessaires.

En l’absence de ce numéro, Python continuera à respecter un calendrier annuel serré d’assouplissement. Les versions 3.x seront supportées jusqu’à 3,99, après quoi un nouveau numéro sera ajouté après la virgule si nécessaire.

Python pourrait devenir cinq fois plus rapide dans les cinq prochaines années.

La lenteur de Python est l’un de ses principaux défauts, malgré ses nombreux attributs positifs. En comparaison avec C++ ou Java, ce langage de haut niveau interprété par abstraction est sensiblement plus lent.

Toutefois, lorsque de nouvelles versions sont publiées, les choses peuvent changer. Guido Van Rossum, le créateur du langage, a déclaré lors du Python Language Summit que la vitesse du langage sera doublée avec la version 3.11, qui sortira en octobre 2022.

Et ce n’est qu’un début. Chaque année, une nouvelle version sera publiée, et la vitesse actuelle sera multipliée par cinq dans les cinq prochaines années.

Van Rossum explique comment il compte réussir ce défi dans une présentation publiée sur GitHub. L’interpréteur adaptatif, l’optimisation de la pile de trames et une taxe sur les exceptions sans frais généraux font partie des approches envisagées.

D’autres changements, comme une ABI (Application Binary Interface) ou un générateur de code automatique, doivent être anticipés pour que Python continue à accélérer. En conséquence, la vitesse semble être la priorité absolue des créateurs de Python.

Python est un langage de programmation interprété de haut niveau à usage général. La philosophie de conception de Python met l’accent sur la lisibilité du code avec son utilisation notable d’une indentation importante. Ses constructions de langage ainsi que son approche orientée objet visent à aider les programmeurs à écrire un code clair et logique pour des projets de petite et grande envergure.

Python est typée dynamiquement et collectée par le garbage. Il prend en charge plusieurs paradigmes de programmation, notamment la programmation structurée (en particulier, procédurale), orientée objet et fonctionnelle. Python est souvent décrit comme un langage  » batteries incluses  » en raison de sa bibliothèque standard complète.

Guido van Rossum a commencé à travailler sur Python à la fin des années 1980, en tant que successeur du langage de programmation ABC, et l’a publié pour la première fois en 1991 sous le nom de Python 0.9.0. Python 2.0 a été publié en 2000 et a introduit de nouvelles fonctionnalités, telles que la compréhension des listes et un système de ramassage des déchets utilisant le comptage des références. Python 3.0 a été publié en 2008. Il s’agit d’une révision majeure du langage qui n’est pas complètement rétrocompatible et une grande partie du code Python 2 ne fonctionne pas sans modification sur Python 3. Python 2 a été abandonné avec la version 2.7.18 en 2020.

Python se classe régulièrement parmi les langages de programmation les plus populaires.

Histoire de Python

Python a été conçu à la fin des années 1980 par Guido van Rossum au Centrum Wiskunde & Informatica (CWI) aux Pays-Bas comme un successeur du langage de programmation ABC, qui était inspiré de SETL, capable de gérer les exceptions et de s’interfacer avec le système d’exploitation Amoeba Sa mise en œuvre a commencé en décembre 1989. Van Rossum a assumé l’entière responsabilité du projet, en tant que développeur principal, jusqu’au 12 juillet 2018, date à laquelle il a annoncé ses  » vacances permanentes  » de ses responsabilités de Dictateur bienveillant à vie de Python, un titre que la communauté Python lui a conféré pour refléter son engagement à long terme en tant que principal décideur du projet. En janvier 2019, les développeurs actifs du noyau Python ont élu un « conseil de direction » de 5 membres pour diriger le projet. En 2021, les membres actuels de ce conseil sont Barry Warsaw, Brett Cannon, Carol Willing, Thomas Wouters et Pablo Galindo Salgado.

Python 2.0 a été publié le 16 octobre 2000, avec de nombreuses nouvelles fonctionnalités majeures, notamment un collecteur de déchets à détection de cycle et la prise en charge d’Unicode.

Python 3.0 a été publié le 3 décembre 2008. Il s’agit d’une révision majeure du langage qui n’est pas complètement rétrocompatible. Beaucoup de ses principales fonctionnalités ont été rétroportées dans les versions 2.6.x et 2.7.x de Python. Les versions de Python 3 comprennent l’utilitaire 2to3, qui automatise (au moins partiellement) la traduction du code Python 2 vers Python 3.

La date de fin de vie de Python 2.7 a été initialement fixée à 2015, puis reportée à 2020, car on craignait qu’un grand nombre de codes existants ne puissent pas être facilement portés vers Python 3. Aucun correctif de sécurité ni aucune autre amélioration ne seront publiés pour cette version.

Python 3.9.2 et 3.8.8 ont été accélérés car toutes les versions de Python (y compris la 2.7) présentaient des problèmes de sécurité, entraînant une possible exécution de code à distance et un empoisonnement du cache Web.

Philosophie de conception et fonctionnalités
Python est un langage de programmation multi-paradigme. La programmation orientée objet et la programmation structurée sont entièrement prises en charge, et un grand nombre de ses fonctionnalités prennent en charge la programmation fonctionnelle et la programmation orientée aspect (notamment par la métaprogrammation et les méta-objets (méthodes magiques)). De nombreux autres paradigmes sont pris en charge par le biais d’extensions, notamment la conception par contrat et la programmation logique.

Python utilise le typage dynamique et une combinaison de comptage de références et de ramasse-miettes à détection de cycle pour la gestion de la mémoire. Il propose également la résolution dynamique des noms (late binding), qui lie les noms de méthodes et de variables pendant l’exécution du programme.

La conception de Python offre un certain soutien à la programmation fonctionnelle dans la tradition de Lisp. Il dispose de fonctions filter,mapetduce, de compréhensions de listes, de dictionnaires, d’ensembles et d’expressions génératrices. La bibliothèque standard comporte deux modules (itertools et functools) qui mettent en œuvre des outils fonctionnels empruntés à Haskell et à Standard ML.

La philosophie de base du langage est résumée dans le document The Zen of Python (PEP 20), qui comprend des aphorismes tels que :

  • Le beau est mieux que le laid.
  • L’explicite est préférable à l’implicite.
  • Le simple est mieux que le complexe.
  • Le complexe est mieux que le compliqué.
  • La lisibilité compte.

Plutôt que d’avoir toutes ses fonctionnalités intégrées dans son noyau, Python a été conçu pour être hautement extensible (avec des modules). Cette modularité compacte l’a rendu particulièrement populaire comme moyen d’ajouter des interfaces programmables à des applications existantes. La vision de Van Rossum d’un petit langage de base doté d’une grande bibliothèque standard et d’un interpréteur facilement extensible est née de ses frustrations à l’égard d’ABC, qui adoptait l’approche opposée.

Python vise une syntaxe et une grammaire plus simples et moins encombrées tout en laissant aux développeurs le choix de leur méthodologie de codage. Contrairement à la devise  » il y a plus d’une façon de faire  » de Perl, Python adopte une philosophie de conception  » il devrait y avoir une – et de préférence une seule – façon évidente de faire  » Alex Martelli, membre de la Python Software Foundation et auteur de livres sur Python, écrit que  » décrire quelque chose comme « intelligent » n’est pas considéré comme un compliment dans la culture Python « .

Les développeurs de Python s’efforcent d’éviter toute optimisation prématurée et rejettent les correctifs apportés aux parties non critiques de l’implémentation de référence CPython qui offriraient des augmentations marginales de la vitesse au détriment de la clarté. Lorsque la vitesse est importante, un programmeur Python peut déplacer les fonctions critiques dans des modules d’extension écrits dans des langages tels que le C, ou utiliser PyPy, un compilateur juste-à-temps. Il existe également Cython, qui traduit un script Python en C et effectue des appels directs d’API au niveau C dans l’interpréteur Python.

Un objectif important des développeurs de Python est de faire en sorte que le langage reste agréable à utiliser. Cela se reflète dans le nom du langage – un hommage au groupe comique britannique Monty Python- et dans les approches parfois ludiques des didacticiels et des documents de référence, comme les exemples qui font référence au spam et aux œufs (d’un célèbre sketch de Monty Python) au lieu des standards foo et bar.

Un néologisme courant dans la communauté Python est pythonique, qui peut avoir un large éventail de significations liées au style du programme. Dire que du code est pythonique, c’est dire qu’il utilise bien les idiomes de Python, qu’il est naturel ou qu’il montre une certaine aisance dans le langage, qu’il est conforme à la philosophie minimaliste de Python et à l’accent mis sur la lisibilité. À l’inverse, le code qui est difficile à comprendre ou qui se lit comme une transcription grossière d’un autre langage de programmation est dit non pythonique.

Les utilisateurs et les admirateurs de Python, en particulier ceux qui sont considérés comme compétents ou expérimentés, sont souvent appelés des pythonistes.

Syntaxe et sémantique

Python est censé être un langage facile à lire. Sa mise en forme est visuellement épurée, et il utilise souvent des mots-clés anglais là où d’autres langues utilisent la ponctuation. Contrairement à de nombreux autres langages, il n’utilise pas de crochets pour délimiter les blocs, et les points-virgules après les instructions sont autorisés mais rarement, voire jamais, utilisés. Il comporte moins d’exceptions syntaxiques et de cas spéciaux que le C ou le Pascal.

Indentation

Python utilise l’indentation des espaces blancs, plutôt que les accolades ou les mots-clés, pour délimiter les blocs. Une augmentation de l’indentation intervient après certaines déclarations ; une diminution de l’indentation signifie la fin du bloc en cours. Ainsi, la structure visuelle du programme représente précisément la structure sémantique du programme. Cette caractéristique est parfois appelée la règle de l’espacement, que certains autres langages partagent, mais dans la plupart des langages, l’indentation n’a aucune signification sémantique. La taille recommandée pour l’indentation est de quatre espaces.

Instructions et flux de contrôle

Les instructions de Python incluent (entre autres) :

  • L’instruction d’affectation, qui utilise un seul signe égal =.
  • L’instruction if, qui exécute un bloc de code de manière conditionnelle, ainsi que else et elif (contraction de else-if).
  • L’instruction for, qui parcourt un objet itérable, en capturant chaque élément dans une variable locale qui sera utilisée par le bloc suivant.
  • L’instruction while, qui exécute un bloc de code tant que sa condition est vraie.
  • L’instruction try, qui permet aux exceptions soulevées dans le bloc de code qui lui est rattaché d’être capturées et traitées par des clauses except ; elle garantit également que le code de nettoyage dans un bloc finally sera toujours exécuté, quelle que soit la façon dont le bloc sort.
  • L’instruction raise, utilisée pour lever une exception spécifique ou lever à nouveau une exception attrapée.
  • L’instruction class, qui exécute un bloc de code et attache son espace de nom local à une classe, pour une utilisation dans la programmation orientée objet.
  • L’instruction def, qui définit une fonction ou une méthode.
  • L’instruction with, qui enferme un bloc de code dans un gestionnaire de contexte (par exemple, l’acquisition d’un verrou avant l’exécution du bloc de code et la libération du verrou par la suite, ou l’ouverture d’un fichier puis sa fermeture), ce qui permet un comportement semblable à celui de l’acquisition de ressources en cours d’initialisation (RAII) et remplace un idiome try/finally courant.
  • L’instruction break permet de sortir d’une boucle.
  • L’instruction continue permet de sauter cette itération et de passer à l’élément suivant.
  • L’instruction del supprime une variable, ce qui signifie que la référence du nom à la valeur est supprimée et que toute tentative d’utilisation de cette variable entraînera une erreur. Une variable supprimée peut être réaffectée.
  • L’instruction pass, qui sert de NOP. Elle est syntaxiquement nécessaire pour créer un bloc de code vide.
  • L’instruction assert, utilisée pendant le débogage pour vérifier les conditions qui devraient s’appliquer.
  • L’instruction yield, qui renvoie une valeur à partir d’une fonction de générateur et yield est également un opérateur. Cette forme est utilisée pour mettre en œuvre des coroutines.
  • L’instruction return, utilisée pour renvoyer une valeur à partir d’une fonction.
  • L’instruction import, qui est utilisée pour importer des modules dont les fonctions ou les variables peuvent être utilisées dans le programme en cours.

L’instruction d’affectation (=) lie un nom en tant que référence à un objet séparé, alloué dynamiquement. Les variables peuvent être reliées ultérieurement à tout moment à n’importe quel objet. En Python, un nom de variable est un support de référence générique et n’est pas associé à un type de données fixe. Cependant, à un moment donné, une variable fera référence à un objet, qui aura un type. C’est ce qu’on appelle le typage dynamique, par opposition aux langages de programmation à typage statique, où chaque variable ne peut contenir que des valeurs d’un certain type.

Python ne prend pas en charge l’optimisation des appels de queue ni les continuations de première classe et, selon Guido van Rossum, il ne le fera jamais. Cependant, une meilleure prise en charge des fonctionnalités de type coroutine est fournie par l’extension des générateurs de Python Avant la version 2.5, les générateurs étaient des itérateurs paresseux ; les informations étaient transmises de manière unidirectionnelle à partir du générateur. Depuis Python 2.5, il est possible de renvoyer des informations dans une fonction de générateur, et depuis Python 3.3, les informations peuvent être transmises à travers plusieurs niveaux de pile.

Expressions

Certaines expressions Python sont similaires à celles que l’on trouve dans des langages tels que C et Java, alors que d’autres ne le sont pas :

  • L’addition, la soustraction et la multiplication sont les mêmes, mais le comportement de la division diffère. Il existe deux types de divisions en Python. Il s’agit de la division plancher (ou division entière) // et de la division à virgule flottante. Python utilise également l’opérateur ** pour l’exponentiation.
  • À partir de Python 3.5, le nouvel opérateur infixe @ a été introduit. Il est destiné à être utilisé par des bibliothèques telles que NumPy pour la multiplication de matrices.
  • À partir de Python 3.8, la syntaxe :=, appelée  » opérateur morse « , a été introduite. Elle attribue des valeurs aux variables dans le cadre d’une expression plus large.
  • En Python, := compare par valeur, contrairement à Java, qui compare les numériques par valeur et les objets par référence (les comparaisons de valeurs en Java sur des objets peuvent être effectuées avec la méthode equals()). L’opérateur is de Python peut être utilisé pour comparer des identités d’objets (comparaison par référence). En Python, les comparaisons peuvent être enchaînées, par exemple a <= b <= c.
  • Python utilise les mots and, or, not pour ses opérateurs booléens plutôt que les symboliques &&, ||, ! utilisés en Java et en C.
  • Python possède un type d’expression appelé compréhension de liste ainsi qu’une expression plus générale appelée expression génératrice.
  • Les fonctions anonymes sont implémentées à l’aide d’expressions lambda ; toutefois, celles-ci sont limitées dans la mesure où le corps ne peut être qu’une seule expression.
  • Les expressions conditionnelles en Python s’écrivent x if c else y (l’ordre des opérandes est différent de celui de l’opérateur c ? x : y commun à de nombreux autres langages).
  • Python fait une distinction entre les listes et les tuples. Les listes s’écrivent [1, 2, 3], sont mutables et ne peuvent pas être utilisées comme clés de dictionnaires (les clés des dictionnaires doivent être immuables en Python). Les tuples s’écrivent comme (1, 2, 3), sont immuables et peuvent donc être utilisés comme clés de dictionnaires, à condition que tous les éléments du tuple soient immuables. L’opérateur + peut être utilisé pour concaténer deux tuples, ce qui ne modifie pas directement leur contenu, mais produit plutôt un nouveau tuple contenant les éléments des deux tuples fournis. Ainsi, si la variable t est initialement égale à (1, 2, 3), l’exécution de t = t + (4, 5) évalue d’abord t + (4, 5), ce qui donne (1, 2, 3, 4, 5), qui est ensuite réaffecté à t, ce qui a pour effet de « modifier le contenu » de t, tout en respectant la nature immuable des objets tuple. Les parenthèses sont facultatives pour les tuples dans des contextes non ambigus.
  • Python propose un déballage de séquence dans lequel plusieurs expressions, chacune évaluant quelque chose qui peut être assigné (une variable, une propriété inscriptible, etc.), sont associées de manière identique à celle formant les littéraux de tuple et, dans leur ensemble, sont placées à gauche du signe égal dans une instruction d’assignation. L’instruction attend un objet itérable sur le côté droit du signe égal qui produit le même nombre de valeurs que les expressions inscriptibles fournies lorsqu’il est parcouru et le parcourra en affectant chacune des valeurs produites à l’expression correspondante sur la gauche.
  • Python possède un opérateur de « formatage de chaîne » %. Cet opérateur fonctionne de manière analogue au format printf des chaînes de caractères en C, par exemple, « spam=%s eggs=%d » % (« blah », 2) évalue à « spam=blah eggs=2 ». Dans Python 3 et 2.6+, cela était complété par la méthode format() de la classe str, par exemple « spam={0} eggs={1} ».format(« blah », 2). Python 3.6 a ajouté « f-strings » : blah = « blah » ; eggs = 2 ; f’spam={blah} eggs={eggs}’.
  • Les chaînes de caractères en Python peuvent être concaténées, en les « additionnant » (même opérateur que pour l’addition des entiers et des flottants). Par exemple, « spam » + « eggs » donne « spameggs ». Même si vos chaînes de caractères contiennent des chiffres, ils sont ajoutés en tant que chaînes de caractères et non en tant qu’entiers. Par exemple, « 2 » + « 2 » renvoie « 22 ».
  • Python dispose de plusieurs types de chaînes littérales :
    • Des chaînes de caractères délimitées par des guillemets simples ou doubles. Contrairement aux shells Unix, à Perl et aux langages influencés par Perl, les guillemets simples et les guillemets doubles fonctionnent de manière identique. Les deux types de chaînes utilisent la barre oblique inversée (\) comme caractère d’échappement. L’interpolation de chaînes de caractères est devenue disponible dans Python 3.6 sous la forme de  » littéraux de chaînes de caractères formatés « .
    • Les chaînes à triple guillemets, qui commencent et se terminent par une série de trois guillemets simples ou doubles. Elles peuvent s’étendre sur plusieurs lignes et fonctionnent comme des documents ici dans les shells, Perl et Ruby.
    • Variétés de chaînes brutes, indiquées en préfixant le littéral de la chaîne par un r. Les séquences d’échappement ne sont pas interprétées ; les chaînes brutes sont donc utiles lorsque les antislashs littéraux sont courants, comme dans les expressions régulières et les chemins de style Windows. Comparez « @-quoting » en C#.
  • Python possède des expressions d’index de tableau et de découpage de tableau sur des listes, désignées par a[key], a[start:stop] ou a[start:stop:step]. Les index sont basés sur zéro, et les index négatifs sont relatifs à la fin. Les tranches prennent les éléments à partir de l’indice de début jusqu’à l’indice d’arrêt, mais sans l’inclure. Le troisième paramètre de la tranche, appelé step ou stride, permet de sauter des éléments et de les inverser. Les index des tranches peuvent être omis, par exemple a[ :] renvoie une copie de la liste entière. Chaque élément d’une tranche est une copie superficielle.

En Python, la distinction entre les expressions et les déclarations est appliquée de manière rigide, contrairement à des langages tels que Common Lisp, Scheme ou Ruby. Cela conduit à la duplication de certaines fonctionnalités. Par exemple :

  • Les compréhensions de liste vs. les boucles for.
  • Les expressions conditionnelles et les blocs if
  • Les fonctions intégrées eval() et exec() (dans Python 2, exec est une instruction) ; la première est pour les expressions, la seconde pour les instructions.

Les déclarations ne peuvent pas faire partie d’une expression, donc les listes et autres compréhensions ou expressions lambda, qui sont toutes des expressions, ne peuvent pas contenir de déclarations. Un cas particulier de ceci est qu’une instruction d’affectation telle que a = 1 ne peut pas faire partie de l’expression conditionnelle d’une instruction conditionnelle. Cela présente l’avantage d’éviter une erreur classique du langage C qui consiste à confondre l’opérateur d’affectation = avec l’opérateur d’égalité == dans les conditions : if (c = 1) { … } est un code C syntaxiquement valide (mais probablement involontaire) mais if c = 1 : … provoque une erreur de syntaxe en Python.

Méthodes

Les méthodes sur les objets sont des fonctions attachées à la classe de l’objet ; la syntaxe instance.method(argument) est, pour les méthodes et fonctions normales, un sucre syntaxique pour Class.method(instance, argument). Les méthodes Python ont un paramètre self explicite pour accéder aux données de l’instance, contrairement au self implicite (ou this) de certains autres langages de programmation orientés objet (par exemple, C++, Java, Objective-C ou Ruby).

Typage

Python utilise le typage en canard et possède des objets typés mais des noms de variables non typés. Les contraintes de type ne sont pas vérifiées à la compilation ; les opérations sur un objet peuvent échouer, ce qui signifie que l’objet en question n’est pas d’un type approprié. Bien qu’il soit typé dynamiquement, Python est fortement typé, interdisant les opérations qui ne sont pas bien définies (par exemple, l’ajout d’un nombre à une chaîne de caractères) plutôt que de tenter silencieusement de leur donner un sens.

Python permet aux programmeurs de définir leurs propres types à l’aide de classes, qui sont le plus souvent utilisées pour la programmation orientée objet. Les nouvelles instances de classes sont construites en appelant la classe (par exemple, SpamClass() ou EggsClass()), et les classes sont des instances du type métaclasse (lui-même une instance de lui-même), ce qui permet la métaprogrammation et la réflexion.

Avant la version 3.0, Python avait deux types de classes : l’ancien style et le nouveau style. La syntaxe des deux styles est la même, la différence étant que la classe objet est héritée de, directement ou indirectement (toutes les classes du nouveau style héritent de object et sont des instances de type). Dans les versions de Python 2 à partir de Python 2.2, les deux types de classes peuvent être utilisés. Les classes de l’ancien style ont été éliminées dans Python 3.0.

Le plan à long terme est de supporter le typage graduel et à partir de Python 3.5, la syntaxe du langage permet de spécifier des types statiques mais ils ne sont pas vérifiés dans l’implémentation par défaut, CPython. Un vérificateur de types statiques expérimental et optionnel nommé mypy prend en charge la vérification des types au moment de la compilation.

Opérations arithmétiques

Python possède les symboles habituels pour les opérateurs arithmétiques (+, -, *, /), l’opérateur de division plancher // et l’opération modulo % (où le reste peut être négatif, par exemple 4 % -3 == -2). Il dispose également de ** pour l’exponentiation, par exemple 5**3 == 125 et 9**0,5 == 3,0, et d’un opérateur de multiplication matricielle @ . Ces opérateurs fonctionnent comme en mathématiques traditionnelles ; avec les mêmes règles de précédence, les opérateurs infixes ( + et – peuvent également être unaires pour représenter respectivement les nombres positifs et négatifs).

La division entre des entiers produit des résultats en virgule flottante. Le comportement de la division a considérablement évolué au fil du temps :

Python 2.1 et les versions antérieures utilisaient le comportement de division du C. L’opérateur / est une division entière si les deux opérandes sont des entiers, et une division en virgule flottante sinon. La division entière arrondit vers 0, par exemple, 7/3 == 2 et -7/3 == -2.
Python 2.2 a modifié la division entière pour arrondir vers l’infini négatif, par exemple 7/3 == 2 et -7/3 == -3. L’opérateur de division plancher // a été introduit. Donc 7//3 == 2, -7//3 == -3, 7.5//3 == 2.0 et -7.5//3 == -3.0. L’ajout de __future__ import division amène un module à utiliser les règles de division de Python 3.0 (voir ci-dessous).
Python 3.0 a modifié / pour qu’il soit toujours une division en virgule flottante, par exemple 5/2 == 2,5.
En termes Python, / est la vraie division (ou simplement la division), et // est la division plancher. / avant la version 3.0 est une division classique.

L’arrondi vers l’infini négatif, bien que différent de la plupart des langages, ajoute de la cohérence. Par exemple, cela signifie que l’équation (a + b)//b == a//b + 1 est toujours vraie. Cela signifie également que l’équation b*(a//b) + a%b == a est valide pour les valeurs positives et négatives de a. Toutefois, le maintien de la validité de cette équation signifie que si le résultat de a%b est, comme prévu, dans l’intervalle semi-ouvert [0, b), où b est un entier positif, il doit se trouver dans l’intervalle (b, 0) lorsque b est négatif.

Python fournit une fonction d’arrondi pour arrondir un flottant au nombre entier le plus proche. Pour départager les ex-aequo, Python 3 utilise l’arrondi au pair : round(1.5) et round(2.5) produisent tous deux 2. Les versions antérieures à 3 utilisaient l’arrondi à partir de zéro : round(0.5) vaut 1.0, round(-0.5) vaut -1.0.

Python autorise les expressions booléennes avec plusieurs relations d’égalité d’une manière qui est cohérente avec l’utilisation générale en mathématiques. Par exemple, l’expression a < b < c vérifie si a est inférieur à b et si b est inférieur à c. Les langages dérivés du C interprètent cette expression différemment : en C, l’expression évalue d’abord a < b, ce qui donne 0 ou 1, et ce résultat est ensuite comparé à c.

Python utilise l’arithmétique de précision arbitraire pour toutes les opérations sur les entiers. Le type/classe Decimal du module decimal fournit des nombres décimaux à virgule flottante avec une précision arbitraire prédéfinie et plusieurs modes d’arrondi. La classe Fraction du module fractions fournit une précision arbitraire pour les nombres rationnels.

Grâce à la vaste bibliothèque mathématique de Python et à la bibliothèque tierce NumPy qui étend encore les capacités natives, Python est fréquemment utilisé comme langage de script scientifique pour résoudre des problèmes tels que le traitement et la manipulation de données numériques.

Exemples de programmation

Programme Hello world :

print(‘Hello, world!’)
Programme pour calculer la factorielle d’un nombre entier positif :

n = int(input(‘Tapez un nombre, et sa factorielle sera imprimée : ‘))

si n < 0 :
raise ValueError(‘Vous devez entrer un nombre entier non négatif’)

factorielle = 1
for i in range(2, n + 1) :
factorielle *= i

print(factorial)

Bibliothèques

La vaste bibliothèque standard de Python, communément citée comme l’une de ses plus grandes forces,  fournit des outils adaptés à de nombreuses tâches. Pour les applications orientées Internet, de nombreux formats et protocoles standard tels que MIME et HTTP sont pris en charge. Elle comprend des modules pour la création d’interfaces graphiques, la connexion à des bases de données relationnelles, la génération de nombres pseudo-aléatoires, l’arithmétique avec des décimales de précision arbitraire, la manipulation d’expressions régulières et les tests unitaires.

Certaines parties de la bibliothèque standard sont couvertes par des spécifications (par exemple, l’implémentation wsgiref de la Web Server Gateway Interface (WSGI) suit le PEP 333), mais la plupart des modules ne le sont pas. Ils sont spécifiés par leur code, leur documentation interne et leurs suites de tests. Cependant, comme la majeure partie de la bibliothèque standard est constituée de code Python multiplateforme, seuls quelques modules doivent être modifiés ou réécrits pour des implémentations variantes.

En mars 2021, le Python Package Index (PyPI), le dépôt officiel des logiciels Python tiers, contenait plus de 290 000 paquets offrant un large éventail de fonctionnalités, notamment :

  • Automatisation
  • Analyse de données
  • Bases de données
  • Documentation
  • Interfaces utilisateur graphiques
  • Traitement d’images
  • Apprentissage automatique
  • Applications mobiles
  • Multimédia
  • Réseaux informatiques
  • Calcul scientifique
  • Administration système
  • Framwork de test
  • Traitement de texte
  • Framework Web
  • Scraping

Environnements de développement

La plupart des implémentations de Python (y compris CPython) comprennent une boucle de lecture-évaluation-impression (REPL), ce qui leur permet de fonctionner comme un interpréteur de ligne de commande pour lequel l’utilisateur saisit les instructions de manière séquentielle et reçoit les résultats immédiatement.

D’autres shells, dont IDLE et IPython, ajoutent des fonctionnalités supplémentaires telles que l’autocomplétion améliorée, la conservation de l’état de la session et la coloration syntaxique.

Outre les environnements de développement intégrés de bureau standard, il existe des IDE basés sur un navigateur Web ; SageMath (destiné au développement de programmes Python liés aux sciences et aux mathématiques) ; PythonAnywhere, un IDE basé sur un navigateur et un environnement d’hébergement ; et Canopy IDE, un IDE Python commercial axé sur le calcul scientifique.

Implémentations

Implémentation de référence

CPython est l’implémentation de référence de Python. Elle est écrite en C, répondant à la norme C89 avec plusieurs fonctionnalités C99 sélectionnées (avec les versions ultérieures de C, elle est considérée comme dépassée ;CPython inclut ses propres extensions C, mais les extensions tierces ne sont pas limitées aux anciennes versions de C, peuvent par exemple être implémentées avec C11 ou C++. Elle compile les programmes Python dans un bytecode intermédiaire qui est ensuite exécuté par sa machine virtuelle. CPython est distribuée avec une grande bibliothèque standard écrite dans un mélange de C et de Python natif. Il est disponible pour de nombreuses plates-formes, y compris Windows (à partir de Python 3.9, le programme d’installation de Python échoue délibérément à s’installer sur Windows 7 et 8 ; Windows XP était pris en charge jusqu’à Python 3.5) et la plupart des systèmes modernes de type Unix, y compris macOS (et les Macs Apple M1, depuis Python 3. 9.1, avec un installateur expérimental) et un support non officiel pour VMS, par exemple. La portabilité des plates-formes était l’une de ses premières priorités, à l’époque de Python 1 et 2, même OS/2 et Solaris étaient supportés ; le support a depuis été abandonné pour de nombreuses plates-formes.

Autres implémentations

  • PyPy est un interprète rapide et conforme de Python 2.7 et 3.6. Son compilateur juste-à-temps apporte une amélioration significative de la vitesse par rapport à CPython mais plusieurs bibliothèques écrites en C ne peuvent pas être utilisées avec lui.
  • Stackless Python est un fork significatif de CPython qui implémente des microthreads ; il n’utilise pas la pile d’appel de la même manière, permettant ainsi des programmes massivement concurrents. PyPy possède également une version stackless.
  • MicroPython et CircuitPython sont des variantes de Python 3 optimisées pour les microcontrôleurs, notamment Lego Mindstorms EV3.
  • Pyston est une variante du runtime Python qui utilise la compilation juste-à-temps pour accélérer l’exécution des programmes Python.
  • Cinder est un fork orienté performances de CPython 3.8 qui contient un certain nombre d’optimisations, notamment la mise en cache en ligne du bytecode, l’évaluation rapide des coroutines, un JIT méthode par méthode et un compilateur de bytecode expérimental.

Implémentations non supportées

D’autres compilateurs Python juste-à-temps ont été développés, mais ne sont plus supportés :

  • Google a lancé un projet nommé Unladen Swallow en 2009, dans le but de quintupler la vitesse de l’interpréteur Python en utilisant la LLVM, et d’améliorer sa capacité de multithreading pour passer à des milliers de cœurs, alors que les implémentations ordinaires souffrent du verrouillage global de l’interpréteur.
  • Psyco est un compilateur spécialisé en juste-à-temps discontinu qui s’intègre à CPython et transforme le bytecode en code machine au moment de l’exécution. Le code émis est spécialisé pour certains types de données et est plus rapide que le code Python standard. Psyco ne supporte pas Python 2.7 ou plus.
  • PyS60 était un interpréteur Python 2 pour les téléphones mobiles Series 60 publiés par Nokia en 2005. Il mettait en œuvre de nombreux modules de la bibliothèque standard et quelques modules supplémentaires pour l’intégration au système d’exploitation Symbian. Le Nokia N900 prend également en charge Python avec les bibliothèques de widgets GTK, ce qui permet d’écrire et d’exécuter des programmes sur l’appareil cible.

Compilateurs croisés avec d’autres langages

Il existe plusieurs compilateurs vers des langages objet de haut niveau, avec comme langage source soit Python non restreint, soit un sous-ensemble restreint de Python, soit un langage similaire à Python :

  • Cython compile (un sur-ensemble de) Python 2.7 en C (tandis que le code résultant est également utilisable avec Python 3 et aussi, par exemple, C++).
  • Nuitka compile Python en C++.
  • Pythran compile un sous-ensemble de Python 3 en C++.
  • Pyrex (dernière version en 2010) et Shed Skin (dernière version en 2013) compilent respectivement en C et C++.
  • Grumpy de Google (dernière version en 2017) transpose Python 2 en Go.
  • IronPython (aujourd’hui abandonné par Microsoft) permet d’exécuter des programmes Python 2.7 sur le Common Language Runtime .NET.
  • Jython compile Python 2.7 en bytecode Java, ce qui permet d’utiliser les bibliothèques Java à partir d’un programme Python.
  • MyHDL est un langage de description de matériel (HDL) basé sur Python, qui convertit le code MyHDL en code Verilog ou VHDL.
  • Numba utilise LLVM pour compiler un sous-ensemble de Python en code machine.
  • Brython, Transcrypt et Pyjs (dernière version en 2012) compilent Python en JavaScript.
  • RPython peut être compilé en C, et est utilisé pour construire l’interpréteur PyPy de Python.

Performances

Une comparaison des performances de diverses implémentations de Python sur une charge de travail non numérique (combinatoire) a été présentée à EuroSciPy ’13. Les performances de Python par rapport à d’autres langages de programmation sont également évaluées par The Computer Language Benchmarks Game.

Développement

Le développement de Python se fait en grande partie par le biais du processus Python Enhancement Proposal (PEP), le principal mécanisme pour proposer de nouvelles fonctionnalités majeures, recueillir les commentaires de la communauté sur les problèmes et documenter les décisions de conception de Python. Le style de codage de Python est couvert par la PEP 8. Les PEP en suspens sont examinées et commentées par la communauté Python et le conseil de direction.

L’amélioration du langage correspond au développement de l’implémentation de référence CPython. La liste de diffusion python-dev est le principal forum pour le développement du langage. Les problèmes spécifiques sont discutés dans le bug tracker Roundup hébergé sur bugs.python.org. Le développement avait lieu à l’origine sur un dépôt de code source auto-hébergé fonctionnant avec Mercurial, jusqu’à ce que Python passe à GitHub en janvier 2017.

Les versions publiques de CPython sont de trois types, qui se distinguent par la partie du numéro de version qui est incrémentée :

  • Les versions rétrocompatibles, où l’on s’attend à ce que le code soit cassé et doit être porté manuellement. La première partie du numéro de version est incrémentée. Ces versions sont peu fréquentes – la version 3.0 est sortie 8 ans après la 2.0.
    Les versions majeures ou  » fonctionnelles  » sont publiées environ tous les 18 mois, mais avec l’adoption d’une cadence annuelle à partir de Python 3.9, elles devraient être publiées une fois par an. La deuxième partie du numéro de version est incrémentée. Chaque version majeure est soutenue par des corrections de bogues pendant plusieurs années après sa sortie.
  • Les versions de correction de bogues, qui n’introduisent pas de nouvelles fonctionnalités, apparaissent environ tous les trois mois et sont réalisées lorsqu’un nombre suffisant de bogues a été corrigé en amont depuis la dernière version. Les vulnérabilités de sécurité sont également corrigées dans ces versions. La troisième et dernière partie du numéro de version est incrémentée.
  • De nombreuses versions alpha, bêta et candidates à la publication sont également publiées à titre d’avant-premières et pour être testées avant les versions finales. Bien qu’il existe un calendrier approximatif pour chaque version, elles sont souvent retardées si le code n’est pas prêt. L’équipe de développement de Python surveille l’état du code en exécutant l’importante suite de tests unitaires pendant le développement.

La principale conférence universitaire sur Python est PyCon. Il existe également des programmes spéciaux de mentorat pour Python, tels que Pyladies.

Python 3.10 déprécie wstr (qui sera supprimé dans Python 3.12 ; ce qui signifie que les extensions Python devront être modifiées d’ici là), et prévoit également d’ajouter la correspondance de motifs au langage.

Générateurs de documentation d’API

Les outils qui peuvent générer de la documentation pour les API Python comprennent notamment pydoc (disponible dans la bibliothèque standard), Sphinx, Pdoc et ses forks, Doxygen et Graphviz.

Nommage

Le nom de Python est dérivé du groupe comique britannique Monty Python, que le créateur de Python, Guido van Rossum, appréciait lors du développement du langage. Les références à Monty Python apparaissent fréquemment dans le code et la culture Python ; par exemple, les variables métasyntaxiques souvent utilisées dans la littérature Python sont spam et eggs au lieu des traditionnels foo et bar. La documentation officielle de Python contient également diverses références aux routines Monty Python.

Le préfixe Py- est utilisé pour montrer que quelque chose est lié à Python. Parmi les exemples d’utilisation de ce préfixe dans les noms d’applications ou de bibliothèques Python, citons Pygame, une liaison de SDL à Python (couramment utilisée pour créer des jeux) ; PyQt et PyGTK, qui lient respectivement Qt et GTK à Python ; et PyPy, une implémentation de Python écrite à l’origine en Python.

Popularité

Depuis 2003, Python s’est constamment classé parmi les dix langages de programmation les plus populaires dans le TIOBE Programming Community Index où, en février 2021, il est le troisième langage le plus populaire (derrière Java et C). Il a été élu langage de programmation de l’année (pour « la plus forte hausse d’audience en un an ») en 2007, 2010, 2018 et 2020 (le seul langage à le faire quatre fois.

Une étude empirique a révélé que les langages de script, tels que Python, sont plus productifs que les langages conventionnels, tels que C et Java, pour les problèmes de programmation impliquant la manipulation de chaînes de caractères et la recherche dans un dictionnaire, et a déterminé que la consommation de mémoire était souvent « meilleure que celle de Java et pas beaucoup plus mauvaise que celle de C ou C++ ».

Les grandes organisations qui utilisent Python comprennent Wikipédia, Google,  Yahoo !, CERN, NASA,  Facebook,  Amazon, Instagram,  Spotify et quelques entités plus petites comme ILM  et ITA.  Le site de réseau social d’actualités Reddit a été écrit principalement en Python.

Utilisations

Python peut servir de langage de script pour les applications web, par exemple via le mod wsgi pour le serveur web Apache. Avec l’interface Web Server Gateway, une API standard a évolué pour faciliter ces applications. Des frameworks Web comme Django, Pylons, Pyramid, TurboGears, web2py, Tornado, Flask, Bottle et Zope aident les développeurs à concevoir et à maintenir des applications complexes. Pyjs et IronPython peuvent être utilisés pour développer le côté client des applications basées sur Ajax. SQLAlchemy peut être utilisé comme mappeur de données vers une base de données relationnelle. Twisted est un cadre pour programmer les communications entre ordinateurs, et est utilisé (par exemple) par Dropbox.

Des bibliothèques telles que NumPy, SciPy et Matplotlib permettent l’utilisation efficace de Python dans le calcul scientifique, avec des bibliothèques spécialisées telles que Biopython et Astropy fournissant des fonctionnalités spécifiques au domaine. SageMath est un système de calcul formel doté d’une interface notebook programmable en Python : sa bibliothèque couvre de nombreux aspects des mathématiques, notamment l’algèbre, la combinatoire, les mathématiques numériques, la théorie des nombres et le calcul. OpenCV dispose de liaisons python avec un riche ensemble de fonctionnalités pour la vision par ordinateur et le traitement des images.

Python est couramment utilisé dans les projets d’intelligence artificielle et d’apprentissage automatique à l’aide de bibliothèques comme TensorFlow, Keras, Pytorch et Scikit-learn. En tant que langage de script doté d’une architecture modulaire, d’une syntaxe simple et de riches outils de traitement de texte, Python est souvent utilisé pour le traitement du langage naturel.

Python a été intégré avec succès dans de nombreux logiciels en tant que langage de script, notamment dans des logiciels de méthode d’éléments finis comme Abaqus, des modeleurs paramétriques 3D comme FreeCAD, des progiciels d’animation 3D comme 3ds Max, Blender, Cinema 4D, Lightwave, Houdini, Maya, modo, MotionBuilder, Softimage, le compositeur d’effets visuels Nuke, des programmes d’imagerie 2D comme GIMP, Inkscape, Scribus et Paint Shop Pro et des programmes de notation musicale comme scorewriter et capella. GNU Debugger utilise Python comme une jolie imprimante pour afficher des structures complexes telles que les conteneurs C++. Esri promeut Python comme étant le meilleur choix pour écrire des scripts dans ArcGIS. Il a également été utilisé dans plusieurs jeux vidéo et a été adopté comme premier des trois langages de programmation disponibles dans Google App Engine, les deux autres étant Java et Go.

De nombreux systèmes d’exploitation incluent Python comme composant standard. Il est livré avec la plupart des distributions Linux, AmigaOS 4 (utilisant Python 2.7), FreeBSD (en tant que package), NetBSD, OpenBSD (en tant que package) et macOS et peut être utilisé à partir de la ligne de commande (terminal). De nombreuses distributions Linux utilisent des installateurs écrits en Python : Ubuntu utilise l’installateur Ubiquity, tandis que Red Hat Linux et Fedora utilisent l’installateur Anaconda. Gentoo Linux utilise Python dans son système de gestion des paquets, Portage.

Python est largement utilisé dans le secteur de la sécurité de l’information, notamment pour le développement d’exploits.

La plupart des logiciels Sugar pour le One Laptop per Child XO, maintenant développé à Sugar Labs, sont écrits en Python. Le projet d’ordinateur monocarte Raspberry Pi a adopté Python comme principal langage de programmation utilisateur.

LibreOffice inclut Python, et a l’intention de remplacer Java par Python. Son fournisseur de scripts Python est une fonctionnalité de base depuis la version 4.0 du 7 février 2013.

Langages influencés par Python

La conception et la philosophie de Python ont influencé de nombreux autres langages de programmation :

  • Boo utilise l’indentation, une syntaxe similaire et un modèle objet similaire.
  • Cobra utilise l’indentation et une syntaxe similaire, et son document Remerciements cite
  • Python en premier parmi les langages qui l’ont influencé.
  • CoffeeScript, un langage de programmation qui effectue une compilation croisée avec JavaScript, possède une syntaxe inspirée de Python.
  • ECMAScript/JavaScript a emprunté les itérateurs et les générateurs à Python.
  • GDScript, un langage de script très similaire à Python, intégré au moteur de jeu Godot.
  • Go est conçu pour la  » vitesse de travail dans un langage dynamique comme Python  » et partage la même syntaxe pour le découpage des tableaux.
  • Groovy a été motivé par le désir d’apporter la philosophie de conception de Python à Java.
  • Julia a été conçu pour être  » aussi utilisable pour la programmation générale que Python « .
  • Nim utilise l’indentation et une syntaxe similaire.
  • Le créateur de Ruby, Yukihiro Matsumoto, a déclaré : « Je voulais un langage de script plus puissant que Perl, et plus orienté objet que Python. C’est pourquoi j’ai décidé de concevoir mon propre langage ».
  • Swift, un langage de programmation développé par Apple, possède une syntaxe inspirée de Python.
  • Les pratiques de développement de Python ont également été imitées par d’autres langages. Par exemple, la pratique consistant à exiger un document décrivant la raison d’être et les problèmes entourant une modification du langage (en Python, un PEP) est également utilisée en Tcl, Erlang, et Swift.