Présentation de Python

Fiche d’identité du langage Python

Date de création :

1989

Créateur :

Guido van Rossum.

Programmeur d’origine hollandaise travaillant actuellement chez Google où il passe la moitié de son temps à suivre le développement du langage Python.

guido
Logo :
logo python
Versions actuelles :

2 branches de développement : Python 2.x et Python 3.x.

  • Python 2.x : v2.7.18 (dernière release de la branche, publiée le 20/04/2020)

  • Python 3.x : v3.11.5 (publiée le 24/08/2023)

    Les 2 versions ne sont pas directement compatibles.

    La version 3.x est la plus répandue mais la version 2 est parfois utilisée pour des raisons de disponibilité de bibliothèques tierces qui n’ont pas encore été migrées vers Python 3.x (cas de plus en plus rare).

Domaines d’utilisation :
  • conception de sites internet (cf. framework web Django)

  • analyse de données avec visualisation éventuelle en 2D/3D (cf. librairie pandas)

  • traitement d’images (cf. librairie mahotas)

  • applications scientifiques (cf. librairies numpy, scipy, matplotlib)

  • administration système

  • …​

Modes d’utilisation :

L’utilisation de Python peut se faire selon plusieurs scénarios. Parmi ceux-ci, on trouve :

  • sous forme de script se suffisant à eux-mêmes.

    Un script peut être considéré comme une succession de commandes regroupées dans un fichier et que l’on va faire exécuter par la machine sans qu’on ait à les taper individuellement. Les administrateurs système s’en servent souvent pour automatiser des tâches répétitives.

  • en tant qu’interface vers des biliothèques codées dans d’autres langages

    Exemple : interface graphique codée en Python + traitements codés en langage C pour plus de rapidité

  • intégré de manière transparente pour l’utilisateur au sein d’un logiciel nécessitant l’utilisation de scripts.

    Exemples : Blender (logiciel de modélisation 3D), Gimp (logiciel d’édition/retouche d’images)

Popularité :

À la 1ère place dans le classement Tiobe en Septembre 2023.

tiobe

Python est le 1ier langage de script dans ce classement. Il devance notamment JavaScript, PHP, Perl et Ruby.

Licence :

Libre de type BSD (Berkeley Software Distribution) :

  • permet l’utilisation de Python et la réutilisation de n’importe quelle partie de son code source sans restriction ;

  • peut être intégré dans un logiciel libre ou propriétaire.

Caractéristiques principales du langage Python

  • haut niveau

  • semi-interprété

  • orienté objet (…​mais également procédural et même fonctionnel par divers aspects)

  • typage dynamique

  • typage fort

  • extensible

  • libre, gratuit, multiplateforme (Windows, Linux, Mac) …​

Haut niveau

Le niveau d’un langage de programmation traduit aussi bien sa dépendance vis à vis du matériel sur lequel il s’exécute que sa capacité à “faciliter” la tâche du programmeur en lui proposant un ensemble de fonctionnalités de base accessibles avec une syntaxe qui tend à se rapprocher du langage humain.

Plus le niveau est bas, plus on se rapproche du matériel.

Python est souvent considéré par ses adeptes comme un langage de très haut niveau pour le différencier un peu des langages C/C++, Java, PHP, Perl qui sont des langages de haut niveau.

Il s’oppose alors à des langages bas niveau tels que le langages machine ou l’assembleur.

Semi-interprété

Il n’y a pas encore si longtemps de çà, un langage était soit interprété soit compilé.

Interprété signifie que l’on peut lancer directement l’exécution du programme correspondant au code source.

Rappelez vous que le code source est toujours traduit en langage machine avant d’être exécuté.

Dans un langage interprété, cette traduction est simplement transparente pour l’utilisateur.

Dans un langage interprété, le code source peut prendre 2 formes :

  1. une seule instruction.

  2. un ensemble d’instructions sauvegardées dans un fichier

Dans le 1ier cas, on exécutera un programme nommé interpréteur Python qui, comme son nom l’indique, interprète et exécute les instructions Python qu’on lui soumet. Par défaut, l’interpréteur se lance dans un mode appelé interactif ou REPL (pour Read-Eval-Print-Loop) qui consiste à attendre puis à exécuter chaque instruction saisie par l’opérateur, un peu à la manière d’une calculatrice.

python repl

Dans le 2ème cas, on exécutera le même interpréteur mais, cette fois-ci, en lui indiquant le nom d’un fichier contenant du code Python (→ script). L’interpréteur exécutera alors, les unes après les autres, les instructions Python contenues dans le fichier et ce, sans aucune intervention de l’opérateur.

python script

Compilé signifie que le code source doit d’abord être transformé sous forme d’un fichier — appelé exécutable — spécifique à la machine et au système d’exploitation sur lesquels on désire l’exécuter grâce à un programme communément appelé compilateur.

Parmi les avantages des langages compilés, on retriendra leur plus grande rapidité par rapport aux langages interprétés et leur fonctionnement autonome (ils ne requièrent pas la présence d’un interpréteur sur la machine).

Les langages interprétés offrent quant à eux une plus grande portabilité. Il est ainsi inutile de recompiler un fichier source codé dans un langage interprété lorsqu’on désire l’exécuter sous Linux alors qu’on l’a codé sous Windows (…​à condition de ne pas faire appel à des spécificités de chaque plateforme).

✓ Semi-interprété représente un “mix” entre l’interprété et le compilé.

Python, Java, C# sont des langages semi-interprétés.

Ces langages vont transformer le code source, de manière transparente pour l’utilisateur, dans un dialecte appelé bytecode.

Ce bytecode reste indépendant de la plateforme mais autorise une plus grande rapidité d’exécution.

Toutefois, les programmes semi-interprétés nécessitent toujours la présence d’un interpréteur sur la machine (appelé Machine Vituelle dans le cas du langage Java ou framework .Net dans le cas du langage C#). Leur vitesse d’exécution est de ce fait toujours moins élevée que celle des programmes générés par les compilateurs.

Dans le cadre du langage Python, plusieurs interpréteurs sont disponibles. Ils permettent d’étendre les capacités de Python en lui donnant accès aux bibliothèques proposées par d’autres langages.

Exemples:

CPython

implémentation par défaut basée sur le langage C.

C’est cet interpréteur que vous utiliserez.

Jython

implémentation permettant de mixer Python et langage Java.

IronPython

implémentation permettant d’utiliser Python sur la plateforme .NET de Microsoft.

PyPy

implémentation de Python…​en Python !

Orienté objet

La programmation objet est un modèle de programmation (on dit aussi parfois “paradigme”) qui consiste à décomposer les fonctionnalités d’un programme en terme d’interactions entre objets plutôt qu’en terme de séquences d’actions (cas du modèle de programmation dit procédural)

Pour tenter d’illustrer les 2 approches, nous allons prendre un exemple qui consiste à calculer la circonférence d’un cercle. Ce traitement informatique se décompose de la façon suivante selon le modèle de programmation choisi :

  • en programmation procédurale :

    1. saisir le rayon du cercle ;

    2. multiplier par 2 pour obtenir le diamètre ;

    3. multiplier par PI pour obtenir la circonférence ;

    4. afficher le résultat.

  • en programmation objet :

    1. créer un objet de type Cercle en spécifiant son rayon ;

    2. “Demander” au cercle sa circonférence. C’est une de ses caractéristiques donc il sait la calculer lui-même ;

    3. afficher la valeur qu’il nous retourne.

Typage dynamique

En Python, les variables ne nécessitent pas d’être déclarées avant leur 1ière utilisation en spécifiant le type de la valeur qu’elles contiennent : le type est déduit automatiqueme lors de l’affectation d’une valeur à cette variable (avec l’opérateur `= ` dont la signification en informatique diffère de celle en mathématiques).

Exemples d’instructions Python :

   prompt = 'Saisissez votre nom : '

   anneeNaissance = 1980

Dans cet exemple, la variable prompt sera considérée automatiquement de type “texte” alors que la variable anneeNaissance sera considérée de type “numérique entière”.

De même, en Python, la nature d’une variable peut évoluer au cours du temps. Par exemple, une variable peut contenir un entier à un moment puis une chaîne de caractères à un autre moment.

Typage fort

Cela signifie que l’on ne peut pas faire d’opérations entre variables de types (vraiment) différents car soit c’est ambigü soit cela n’a aucun sens.

Exemple : Que représente l’expression 'a' + 4 ? Celle-ci doit-elle être évaluée comme ‘e’ c’est-à-dire la 4ième lettre après le ‘a’ ou comme la chaîne de caractères “a4” c’est-à-dire la mise bout à bout du caractère ‘a’ et du caractère qui représente la valeur 4 ?

En Python, on obtiendra le 1ier résultat en tapant la commande chr(ord('a')+4) qui sera évaluée par l’interpréteur Python comme le caractère ‘e’ c’est-à-dire celui correspondant au code de la lettre ‘a’ dans le jeu de caractères courant augmenté de 4.

Un jeu de caractère est une table qui spécifie de manière normalisée comment les lettres doivent être codées dans l’ordinateur.

Ce code est une valeur numérique.

Par exemple, dans le jeu de caractères nommé Unicode, le code de la lettre ‘a’ vaut 97.

Unicode permet d’attribuer un code à la plupart des lettres ou symboles utilisés dans l’ensemble des langues parlées à travers le monde.

Pour arriver au 2ième résultat, on tapera la commande 'a' + str(4) qui sera évaluée comme la mise bout à bout de ‘a’ avec la représentation de la valeur 4 sous forme caractère.

Explication de : chr(ord('a')+4)

On convertit d’abord, grâce à la fonction ord() , la lettre ‘a’ en un entier que l’on additionne avec 4 puis on transforme le résultat obtenu en caractère avec la fonction chr() .

Explication de : 'a' + str(4)

À l’aide de la fonction str(), on représente la valeur 4 sous forme de texte (c’est-à-dire avec un chiffre) puis on le “colle” à la suite de la lettre ‘a’. On dit aussi qu’on concatène les 2 chaînes de caractères.

Dans un contexte de chaîne de caractères, l’opérateur ‘+’ perd donc sa signification d’addition arithmétique.

On confond souvent chiffre et nombre.

Un chiffre est un symbole utilisé pour représenter un nombre. Ex. : Le nombre 143 est représenté avec Les 3 chiffres ‘1’, ‘4’ et ‘3’.

Pour illustrer et se souvenir de cette différence, on peut se dire qu’au temps des romains, la représentation du nombre 4 aurait donné `IV' et non `4'.

Pour lever l’ambiguité sur l’opération à effectuer dans les 2 instructions précédentes, on les a codées de manière à effectuer des opérations sur des valeurs de même type (entier ou caractère) pour signifier à Python ce que l’on voulait vraiment faire.

Extensible

Les possibilités de Python peuvent facilement être étendues grâce à l’adjonction de librairies — appelées modules en Python — qui donnent accès à des fonctionnalités couvrant de nombreux domaines (bases de données, web, calcul scientifique, réseau, traitement d’images …​).

Cette caractéristique fait de Python un langage généraliste.

🞄  🞄  🞄