Présentation de Python

Python est édité par Python Software Foundation (PSF).

C’est un langage de programmation objet, multi-paradigme et multi-plateformes, né en 1991 du travail de Guido van Rossum. Il favorise la programmation impérative structurée et orientée objet.

Python est doté d’un typage dynamique fort, d’une gestion automatique de la mémoire par ramasse-miettes et d’un système de gestion d’exceptions ; il est ainsi similaire à Perl, Ruby, Scheme, Smalltalk et Tcl.
Python est un langage interprété, c’est-à-dire que les instructions que vous lui envoyez sont « transcrites » en langage machine au fur et à mesure de leur lecture.
De plus, il faudra installer Python sur le système d’exploitation que vous utilisez pour que l’ordinateur puisse comprendre votre code.
Python est aussi le langage de programmation le plus utilisé dans le domaine du Machine Learning, du Big Data et de la Data Science.

Points forts

  1. Python est gratuit et “Open Source”, on peut l’utiliser sans restriction dans des projets commerciaux.
  2. Python est portable, non seulement sur les différentes variantes d’Unix et Linux, mais aussi sur les OS propriétaires : MacOS et Windows.
  3. Python convient aussi bien à des scripts d’une dizaine de lignes de code qu’à des projets complexes de plusieurs dizaines de milliers de lignes.
  4. En Python, la syntaxe est très simple et, combinée à des types de données évolués (listes, dictionnaires ..), conduit à des programmes à la fois très compacts et très lisibles. A fonctionnalités égales, un programme Python complet et dûment commenté est souvent de 3 à 5 fois plus court qu’un programme C ou C++, ou même Java équivalent, ce qui représente en général un temps de développement de 5 à 10 fois plus court et une facilité de maintenance largement accrue.
  5. Python gère ses ressources (mémoire, descripteurs de fichiers ..) sans intervention du programmeur, par un mécanisme de comptage de références (proche, mais différent, d’un “garbage collector”, ramasse miettes).
  6. Il n’y a pas de pointeurs explicites en Python.
  7. Python est aussi multi-threadé.
  8. Python est orienté objet. Il supporte l’héritage multiple et la surcharge des opérateurs. Dans son modèle objet, et en reprenant la terminologie de C++, toutes les méthodes sont virtuelles.
  9. Python intègre, comme Java ou les versions récentes de C++, un système d’exceptions, qui permettent de simplifier considérablement la gestion des erreurs.
  10. Python est dynamique (l’interpréteur peut évaluer des chaînes de caractères représentant des expressions ou des instructions Python), orthogonal (un petit nombre de concepts suffit à engendrer des constructions très riches), réflectif (il supporte la méta-programmation, par exemple la capacité pour un objet de se rajouter ou de s’enlever des attributs ou des méthodes, ou même de changer de classe en cours d’exécution) et introspectif (un grand nombre d’outils de développement, comme le “debugger” ou le “profiler”, sont implantés en Python lui-même).
  11. Comme Scheme ou SmallTalk, Python est dynamiquement typé. Tout objet utilisé par le programmeur possède un type bien défini à l’exécution, qui n’a pas besoin d’être déclaré à l’avance.
  12. Python possède actuellement 2 implémentations. L’une, écrite en C, interprétée. L’autre, JPython, est écrit en Java et génère directement du bytecode Java.
  13. Python est extensible : comme Tcl ou Guile, on peut facilement l’interfacer avec des bibliothèques C existantes. On peut aussi s’en servir comme d’un langage d’extension pour des systèmes logiciels complexes.
  14. La bibliothèque standard de Python, et les paquets contribués, donnent accès à une grande variété de services: chaînes de caractères et expressions régulières, services UNIX standards (fichiers, pipes, signaux, sockets, threads…), protocoles Internet (Web, News, FTP, CGI, HTML ..), persistance et bases de données, interfaces graphiques.
  15. Python est un langage qui continue à évoluer, soutenu par une communauté d’utilisateurs enthousiastes et responsables, dont la plupart sont des supporters du logiciel libre.
  16. Enfin, Python est un langage de choix pour traiter le XML.
  17. Écrire des programmes en Python prend moins de temps que dans un autre langage. Il s’agit d’un langage idéal pour les débutants.

Points faibles

  • Moins performant qu’un langage compilé : en effet, les programmes Python sont interprétés, puis compilés en instructions portables, puis exécutés par une machine virtuelle (comme pour Java, avec une différence importante: Java étant statiquement typé, il est beaucoup plus facile d’accélérer l’exécution d’un programme Java que d’un programme Python).

Historique des versions de Python

Il y a eu 3 versions majeures entre juin 1991 et mai 2020.

mai 2020

Python 3.8

Icone du logiciel Python 3.8

  • API C
  • Opérateur morse
  • Arguments positionnels
  • Changements dans les F-String
  • Bloc finally
décembre 2008

Python 3

juillet 2010

Python 2.7

octobre 2000

Python 2

Python 2.x est l’ancienne version, qui a été supportée avec des mises à jour officielles jusqu’en 2020. Après cette date, elle continuera d’ailleurs sans doute de subsister de façon non officielle.

  • Changement majeur : support d’Unicode
  • Ajout des compréhensions de liste (List Comprehensions)
  • Ajout des opérateurs avec assignement (a+=b, a*=b, etc.)
  • Les chaînes str ont maintenant des méthodes
  • Nouveau ramasse-miettes à cycles
  • Ajout des modules distutils, xml.dom.minidom et xml.sax
septembre 2000

Python 1.6

  • La méthode append() des listes n’accepte plus qu’un seul argument
  • Le résultat des fonctions str() et repr() est maintenant beaucoup plus souvent différent, exemple : str(1L)==‘1’ et repr(1L)==‘1L’
  • Les chaînes de caractères ont maintenant des méthodes (“ abc ”.strip())
  • Le module re est compatible avec l’ancien moteur, est plus rapide, et accepte les chaînes Unicode
  • Ajout du module distutils
  • Nouveau prototype def f(*args, **kw) pour les fonctions, avant il fallait utiliser apply()
    int() et long() acceptent maintenant une base en second argument
  • L’opérateur in peut être surchagé avec une méthode contains()
avril 1999

Python 1.5

  • Ajout du mot clé assert
  • Possibilité d’importer une hiérarchie de modules (import spam.ham.eggs)
  • Nouveau module re qui remplace regex
  • Les exceptions sont maintenant des classes
  • Ajout de l’option -O qui supprime les assertions et informations de ligne de fichier