Qu'est-ce que Python? Programmation puissante et intuitive

Datant de 1991, le langage de programmation Python était considéré comme un comble, un moyen d'écrire des scripts qui «automatisent les choses ennuyeuses» (comme le disait un livre populaire sur l'apprentissage de Python) ou de 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-plan, mais une force majeure dans la création d'applications Web et la gestion de systèmes, et un moteur clé de l'explosion de l'analyse des mégadonnées et de l'intelligence artificielle.

Vidéo connexe: Comment Python facilite la programmation

Parfait pour l'informatique, Python simplifie de nombreux types de travail, de l'automatisation du système au travail dans des domaines de pointe comme l'apprentissage automatique.

Les principaux avantages de Python 

Le succès de Python tourne autour de plusieurs avantages qu'il offre aux débutants et 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 de temps ou d'efforts pour produire vos premiers programmes. La syntaxe Python est conçue pour être lisible et simple. Cette simplicité fait de Python un langage d'enseignement idéal et permet aux nouveaux arrivants de le saisir 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 à réfléchir aux complexités du langage ou à déchiffrer le code laissé par les autres.

Python est largement adopté et pris en charge

Python est à la fois populaire et largement utilisé, comme l'attestent les classements élevés dans les enquêtes comme 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 mineurs. De nombreuses bibliothèques majeures et services basés sur des 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 en parlerons 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 langage le plus rapide , 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 parties standard du langage, ce qui facilite l'écriture d'applications Python qui effectuent un traitement simultané.

À quoi sert Python

Le cas d'utilisation le plus basique de Python est un langage de script et d'automatisation. Python n'est pas seulement un remplacement des scripts shell ou des fichiers batch; il est également utilisé pour automatiser les interactions avec les navigateurs Web ou les interfaces graphiques d'applications ou pour faire l'approvisionnement 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.

G La programmation d'application avec Python

Vous pouvez créer des applications d'interface graphique 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 ce faire.

Science des données et apprentissage automatique avec Python

L'analyse de données sophistiquée est devenue l'un des domaines informatiques les plus rapides 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 fournissent 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 et les bibliothèques Python eux-mêmes. Cela permet à Python de fonctionner comme un générateur de code très efficace, ce qui permet d'écrire des applications qui manipulent leurs propres fonctions et ont le type d'extensibilité qu'il serait difficile ou impossible d'obtenir dans d'autres langages.

Python peut également être utilisé pour piloter des systèmes de génération de code, tels que LLVM, pour créer efficacement du code dans d'autres langages.

"Glue code" en Python

Python est souvent décrit comme un «langage glu», ce qui signifie qu'il peut permettre à un code disparate (généralement des bibliothèques avec des interfaces en langage C) d'interagir. Son utilisation dans la science des données et l'apprentissage automatique est 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 aimeriez attacher, mais que vous ne pouvez pas vous parler directement, vous pouvez utiliser Python pour les connecter.

Là où Python échoue

Il convient également de noter les types de tâches pour lesquelles Python n'est pas bien adapté.

Python est un langage de haut niveau, il ne convient donc pas à la programmation au niveau du système - les pilotes de périphériques ou les noyaux de système d'exploitation sont hors de propos.

Ce n'est pas non plus idéal pour les situations qui nécessitent des binaires autonomes multiplateformes . 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, il vaut mieux 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, sans prétention. Un «bonjour le monde» standard en Python 3.x n'est rien de plus que:

print ("Bonjour tout le monde!")

Python fournit de nombreux éléments syntaxiques pour exprimer de manière concise de nombreux flux de programmes courants. Considérez un exemple de programme pour lire les lignes d'un fichier texte dans un objet de liste, en supprimant chaque ligne de son caractère de fin de ligne en cours de route:

avec open ('myfile.txt') comme mon_fichier:

    file_lines = [x.rstrip ('\ n') pour x dans mon_fichier]

La with/asconstruction 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_fileinstancié avec la 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 Python, la compréhension de liste . Il permet d' my_fileitérer un élément qui contient d'autres éléments (ici, et les lignes qu'il contient), et il permet à chaque élément itéré (c'est-à-dire chacun x) d'être traité et automatiquement ajouté à une liste.

Vous pouvez écrire une chose telle qu'une for… boucle formelle 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 d'effectuer 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 la concision et la lisibilité.

Les autres fonctionnalités du langage de Python sont destinées à compléter les cas d'utilisation courants. La plupart des types d'objets modernes (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 hashmaps ou les magasins de valeurs-clés), les tuples (pour stocker des collections d'objets immuables) 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, suffisamment différentes pour faire trébucher 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 par la suite. 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 morse»), de meilleurs contrôles de concurrence, et plus interprète efficace.

L'adoption de Python 3 a été ralentie le plus longtemps par le manque relatif de prise en charge des bibliothèques tierces. De nombreuses bibliothèques Python ne supportaient que Python 2, ce qui rend le basculement difficile. Mais au cours des deux dernières années, le nombre de bibliothèques ne supportant 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.

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 large assortiment de bibliothèques faciles à obtenir et à utiliser de développeurs tiers. Python s'est enrichi de 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: lecture et écriture de formats de fichiers structurés comme JSON et XML, manipulation de fichiers compressés, utilisation de protocoles Internet et de formats de données (pages Web, URL, e-mails). La plupart des codes externes qui exposent une interface de fonction étrangère compatible C sont accessibles avec le ctypesmodule de Python .

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 Python Package Index (PyPI), constituent la vitrine la plus solide de la popularité et de la polyvalence de Python.

Par exemple:

  • La bibliothèque BeautifulSoup fournit une boîte à outils tout-en-un pour le scraping HTML - même le HTML délicat et cassé - et en extraire des données.
  • Les requêtes rendent le travail avec les requêtes HTTP à l'échelle indolore et simple.
  • Des frameworks comme Flask et Django permettent le 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 a 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 des objets. Normalement, le garbage collection se produit automatiquement en arrière-plan, mais si cela pose un problème de performances, vous pouvez le déclencher manuellement ou le désactiver entièrement, ou déclarer des régions entières d'objets exemptes de garbage collection comme une 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 à ce sujet plus tard), mais rend beaucoup plus facile d'écrire du 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 abstractions qui peuvent être modifiées si nécessaire.

L'utilisation par Python d' un espace blanc significatif a été citée 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 une indentation appropriée pour indiquer le flux de contrôle.

avec open ('myfile.txt') comme mon_fichier:

    file_lines = [x.rstrip ('\ n') pour x dans mon_fichier]

Les espaces blancs syntaxiques peuvent faire plisser 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 problème potentiel, en particulier pour ceux qui proviennent 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 grandes bases de code. Cela dit, Python a récemment ajouté la prise en charge de l'indication de type facultative au moment de la compilation, de sorte que les projets qui pourraient bénéficier du typage statique peuvent 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.