Datant de 1991, le langage de programmation Python était considéré comme un gap-filler, un moyen d’écrire des scripts qui “automatiser les trucs ennuyeux” (comme le dit un livre populaire sur l’apprentissage de Python) ou pour prototyper rapidement des applications qui seront implémentées dans d’autres langages.
Cependant, au cours des dernières années, Python est devenu un citoyen de premier ordre dans le développement de logiciels modernes, la gestion d’infrastructure et l’analyse de données. Ce n’est plus un langage utilitaire d’arrière-boutique, mais une force majeure dans la création d’applications Web et la gestion des systèmes, et un moteur clé de l’explosion de l’analyse des mégadonnées et de l’intelligence artificielle.
Les principaux avantages de Python
Le succès de Python repose sur plusieurs avantages qu’il offre aux débutants comme aux experts.
Python est facile à apprendre et à utiliser
Le nombre de fonctionnalités dans le langage lui-même est modeste, nécessitant relativement peu d’investissement de temps ou d’efforts pour produire vos premiers programmes. La syntaxe Python est conçue pour être lisible et simple. Cela fait de Python un langage d’enseignement idéal et permet aux nouveaux arrivants de l’apprendre rapidement. En conséquence, les développeurs passent plus de temps à réfléchir au problème qu’ils essaient de résoudre et moins de temps à réfléchir aux complexités du langage ou à déchiffrer le code laissé par d’autres.
Python est largement adopté et pris en charge
Python est à la fois populaire et largement utilisé, comme en témoignent les classements élevés dans des enquêtes telles que l’indice Tiobe et le grand nombre de projets GitHub utilisant Python. Python s’exécute sur tous les principaux systèmes d’exploitation et plates-formes, ainsi que sur la plupart des plus petits. De nombreuses bibliothèques majeures et services alimentés par API ont des liaisons ou des wrappers Python, permettant à Python de s’interfacer librement avec ces services ou d’utiliser directement ces bibliothèques.
Python n’est pas un langage “jouet”
Même si les scripts et l’automatisation couvrent une grande partie des cas d’utilisation de Python (nous y reviendrons plus tard), Python est également utilisé pour créer des logiciels de qualité professionnelle, à la fois en tant qu’applications autonomes et en tant que services Web. Python n’est peut-être pas le le plus rapide langage, mais ce qui lui manque en vitesse, il le compense en polyvalence.
Python continue d’avancer
Chaque révision du langage Python ajoute de nouvelles fonctionnalités utiles pour suivre le rythme des pratiques de développement logiciel modernes. Les opérations asynchrones et les coroutines, par exemple, sont désormais des éléments standard du langage, ce qui facilite l’écriture d’applications Python qui effectuent un traitement simultané.
A quoi sert Python
Le cas d’utilisation le plus basique de Python est celui d’un langage de script et d’automatisation. Python ne se contente pas de remplacer les scripts shell ou les fichiers batch ; Il est également utilisé pour automatiser les interactions avec les navigateurs Web ou les interfaces graphiques des applications ou pour effectuer le provisionnement et la configuration du système dans des outils tels que Ansible et Salt. Mais les scripts et l’automatisation ne représentent que la pointe de l’iceberg avec Python.
gprogrammation générale d’applications avec Python
Vous pouvez créer des applications graphiques en ligne de commande et multiplateformes avec Python et les déployer en tant qu’exécutables autonomes. Python n’a pas la capacité native de générer un binaire autonome à partir d’un script, mais des packages tiers tels que cx_Freeze et PyInstaller peuvent être utilisés pour y parvenir.
Science des données et apprentissage automatique avec Python
L’analyse sophistiquée des données est devenue l’un des domaines informatiques les plus dynamiques et l’un des cas d’utilisation phares de Python. La grande majorité des bibliothèques utilisées pour la science des données ou l’apprentissage automatique ont des interfaces Python, ce qui fait du langage l’interface de commande de haut niveau la plus populaire pour les bibliothèques d’apprentissage automatique et d’autres algorithmes numériques.
Services Web et API RESTful en Python
Les bibliothèques natives de Python et les frameworks Web tiers offrent des moyens rapides et pratiques de tout créer, des simples API REST en quelques lignes de code aux sites complets basés sur les données. Les dernières versions de Python prennent en charge les opérations asynchrones, permettant aux sites de gérer des dizaines de milliers de requêtes par seconde avec les bonnes bibliothèques.
Métaprogrammation et génération de code en Python
En Python, tout dans le langage est un objet, y compris les modules Python et les bibliothèques elles-mêmes. Cela permet à Python de fonctionner comme un générateur de code très efficace, permettant d’écrire des applications qui manipulent leurs propres fonctions et ont le type d’extensibilité qui serait difficile ou impossible à réaliser dans d’autres langages.
Python peut également être utilisé pour piloter des systèmes de génération de code, tels que LLVM, afin de créer efficacement du code dans d’autres langages.
“Code de colle” en Python
Python est souvent décrit comme un “langage de liaison”, ce qui signifie qu’il peut laisser interagir du code disparate (généralement des bibliothèques avec des interfaces en langage C). Son utilisation en science des données et en apprentissage automatique s’inscrit dans cette veine, mais ce n’est qu’une incarnation de l’idée générale. Si vous avez des applications ou des domaines de programme que vous souhaitez associer, mais que vous ne pouvez pas communiquer directement, vous pouvez utiliser Python pour les connecter.
Là où Python échoue
Il convient également de noter les types de tâches que Python est ne pas bien adapté pour.
Python est un langage de haut niveau, il n’est donc pas adapté à la programmation au niveau du système – les pilotes de périphériques ou les noyaux du système d’exploitation sont hors de propos.
Ce n’est pas non plus idéal pour les situations qui nécessitent multiplateforme binaires autonomes. Vous pouvez créer une application Python autonome pour Windows, macOS et Linux, mais pas de manière élégante ou simple.
Enfin, Python n’est pas le meilleur choix lorsque la vitesse est une priorité absolue dans tous les aspects de l’application. Pour cela, mieux vaut utiliser C/C++ ou un autre langage de ce calibre.
Comment Python simplifie la programmation
La syntaxe de Python est censée être lisible et propre, avec peu de prétention. Un “hello world” standard dans Python 3.x n’est rien de plus que :
print(“Hello world!”)
Python fournit de nombreux éléments syntaxiques pour exprimer de manière concise de nombreux flux de programme courants. Considérez un exemple de programme pour lire les lignes d’un fichier texte dans un objet liste, en supprimant chaque ligne de son caractère de fin de ligne en cours de route :
with open(‘myfile.txt’) as my_file:
file_lines = [x.rstrip(‘n’) for x in my_file]
La with/as
la construction est un gestionnaire de contexte, qui fournit un moyen efficace d’instancier un objet pour un bloc de code, puis de le supprimer en dehors de ce bloc. Dans ce cas, l’objet est my_file
instancié avec le open()
fonction. Cela remplace plusieurs lignes de passe-partout pour ouvrir le fichier, en lire des lignes individuelles, puis le fermer.
La [x … for x in my_file]
construction est une autre idiosyncrasie de Python, la compréhension de la liste. Il permet à un élément qui contient d’autres éléments (ici, my_file
et les lignes qu’il contient) être itéré, et il laisse chaque élément itéré (c’est-à-dire chaque x
) être traitées et automatiquement ajoutées à une liste.
Tu pourrait écrire une chose telle qu’un formel for…
boucle en Python, comme vous le feriez dans un autre langage. Le fait est que Python a un moyen d’exprimer économiquement des choses comme des boucles qui itèrent sur plusieurs objets et effectuent une opération simple sur chaque élément de la boucle, ou de travailler avec des choses qui nécessitent une instanciation et une élimination explicites.
Des constructions comme celle-ci permettent aux développeurs Python d’équilibrer le laconisme et la lisibilité.
Les autres fonctionnalités du langage Python sont destinées à compléter les cas d’utilisation courants. La plupart des types d’objets modernes (les chaînes Unicode, par exemple) sont intégrés directement dans le langage. Les structures de données, telles que les listes, les dictionnaires (c’est-à-dire les cartes de hachage ou les magasins clé-valeur), les tuples (pour stocker des collections immuables d’objets) et les ensembles (pour stocker des collections d’objets uniques) sont disponibles en tant qu’éléments standard.
Python 2 contre. Python 3
Python est disponible en deux versions, qui sont suffisamment différentes pour attirer de nombreux nouveaux utilisateurs. Python 2.x, l’ancienne branche “héritée”, continuera à être pris en charge (c’est-à-dire à recevoir des mises à jour officielles) jusqu’en 2020, et il pourrait persister officieusement après cela. Python 3.x, l’incarnation actuelle et future du langage, possède de nombreuses fonctionnalités utiles et importantes que l’on ne trouve pas dans Python 2.x, telles que de nouvelles fonctionnalités de syntaxe (par exemple, “l’opérateur de morse”), de meilleurs contrôles de concurrence et un plus interprète efficace
L’adoption de Python 3 a été ralentie le plus longtemps par le manque relatif de prise en charge de bibliothèques tierces. De nombreuses bibliothèques Python ne supportaient que Python 2, ce qui rendait difficile le changement. Mais au cours des deux dernières années, le nombre de bibliothèques ne prenant en charge que Python 2 a diminué ; Toutes les bibliothèques les plus populaires sont désormais compatibles avec Python 2 et Python 3. Aujourd’hui, Python 3 est le meilleur choix pour les nouveaux projets ; Il n’y a aucune raison de choisir Python 2 à moins que vous n’ayez pas le choix. Si vous êtes coincé avec Python 2, vous avez différentes stratégies à votre disposition.
Les bibliothèques de Python
Le succès de Python repose sur un riche écosystème de logiciels propriétaires et tiers. Python bénéficie à la fois d’une bibliothèque standard solide et d’un assortiment généreux de bibliothèques facilement obtenues et facilement utilisables par des développeurs tiers. Python a été enrichi par des décennies d’expansion et de contribution.
La bibliothèque standard de Python fournit des modules pour les tâches de programmation courantes : mathématiques, gestion des chaînes, accès aux fichiers et aux répertoires, mise en réseau, opérations asynchrones, threading, gestion multiprocessus, etc. Mais il comprend également des modules qui gèrent les tâches de programmation courantes de haut niveau nécessaires aux applications modernes : lire et écrire des formats de fichiers structurés tels que JSON et XML, manipuler des fichiers compressés, travailler avec des protocoles Internet et des formats de données (pages Web, URL, e-mail). La plupart des codes externes qui exposent une interface de fonction étrangère compatible C sont accessibles avec Python ctypes
module.
La distribution Python par défaut fournit également une bibliothèque d’interface graphique multiplateforme rudimentaire, mais utile, via Tkinter, et une copie intégrée de la base de données SQLite 3.
Les milliers de bibliothèques tierces, disponibles via le Python Package Index (PyPI), constituent la meilleure vitrine de la popularité et de la polyvalence de Python.
Par exemple:
- La bibliothèque BeautifulSoup fournit une boîte à outils tout-en-un pour gratter le HTML – même le HTML délicat et cassé – et en extraire des données.
- Les requêtes facilitent et simplifient le travail avec les requêtes HTTP à grande échelle.
- Des frameworks comme Flask et Django permettent un développement rapide de services Web qui englobent à la fois des cas d’utilisation simples et avancés.
- Plusieurs services cloud peuvent être gérés via le modèle objet de Python à l’aide d’Apache Libcloud.
- NumPy, Pandas et Matplotlib accélèrent les opérations mathématiques et statistiques et facilitent la création de visualisations de données.
Les compromis de Python
Comme C #, Java et Go, Python dispose d’une gestion de la mémoire récupérée, ce qui signifie que le programmeur n’a pas à implémenter de code pour suivre et libérer les objets. Normalement, la récupération de place se produit automatiquement en arrière-plan, mais si cela pose un problème de performances, vous pouvez la déclencher manuellement ou la désactiver entièrement, ou déclarer des régions entières d’objets exemptes de récupération de place en tant qu’amélioration des performances.
Un aspect important de Python est son dynamisme. Tout dans le langage, y compris les fonctions et les modules eux-mêmes, est traité comme des objets. Cela se fait au détriment de la vitesse (plus sur cela plus tard), mais facilite beaucoup l’écriture de code de haut niveau. Les développeurs peuvent effectuer des manipulations d’objets complexes avec seulement quelques instructions, et même traiter des parties d’une application comme des résumés qui peuvent être modifiés si nécessaire.
L’utilisation de Python de espace blanc significatif a été cité à la fois comme l’un des meilleurs et des pires attributs de Python. L’indentation sur la deuxième ligne ci-dessous n’est pas seulement pour la lisibilité ; cela fait partie de la syntaxe de Python. Les interpréteurs Python rejetteront les programmes qui n’utilisent pas l’indentation appropriée pour indiquer le flux de contrôle.
with open(‘myfile.txt’) as my_file:
file_lines = [x.rstrip(‘n’) for x in my_file]
Les espaces blancs syntaxiques peuvent faire froncer le nez, et certaines personnes rejettent Python pour cette raison. Mais les règles d’indentation strictes sont beaucoup moins gênantes en pratique qu’elles ne le paraissent en théorie, même avec le plus petit des éditeurs de code, et le résultat est un code plus propre et plus lisible.
Un autre blocage potentiel, en particulier pour ceux provenant de langages comme C ou Java, est la façon dont Python gère le typage des variables. Par défaut, Python utilise le typage dynamique ou “canard”, idéal pour un codage rapide, mais potentiellement problématique dans les bases de code volumineuses. Cela dit, Python a récemment ajouté la prise en charge de l’indication facultative de type au moment de la compilation, afin que les projets qui pourraient bénéficier du typage statique puissent l’utiliser.
Python est-il lent ? Pas nécessairement
Une mise en garde commune à propos de Python est qu’il est lent. Objectivement, c’est vrai. Les programmes Python s’exécutent généralement beaucoup plus lentement que les programmes correspondants en C/C++ ou Java. Certains programmes Python seront plus lents d’un ordre de grandeur ou plus.