PYTHON Valid XHTML 1.1Cette page est conforme à la norme CSS!Mise à jour 03-2002
SOMMAIRE

Présentation
    Préambule
    Description du langage
Les exemples détaillés
Les outils et liens
Télécharger les exemples
PRESENTATIONRetour en haut de page

Préambule

Python est encore un langage de script, provenant initialement du monde du logiciel libre, et maintenant porté sous Windows et d'autres systèmes d'exploitation.

Il garde des langages de scripts qui l'ont précédé (Tcl, Perl) la souplesse et l'adaptibilité : de nouveaux modules, que l'on peut développer dans le langage même, permettent d'en étendre les possibilités.

Au titre des extensions, on peut citer :
  • la bibliothèque graphique Tk (déjà traitée dans les pages Tcl et Perl de ce site),
  • l'accès aux bases de données (Mysql),
  • le traitement de données Xml ...
Les extensions, nommées modules, sont très nombreuses et couvrent des domaines variés du développement.

Un autre aspect intéressant est l'approche objet qui autorise un développement modulaire des applications.

Description du langage

La syntaxe
La syntaxe d'un programme Python est particulière : la règle principale est l'indentation.
Ce qui n'est dans certains langages qu'une facilité de présentation est ici significatif de la structure du programme : le traitement d'un if est décalé par rapport au if et se termine par une ligne vierge. L'indentation se réalise soit par tabulation, soit par insertion d'espaces.

Le programme source créé est sauvegardé sous l'extension .py

Les modules
Les modules donnent à Python toute son adaptabilité. On trouve des modules pour la manipulation de chaines de caractères, pour les calculs mathématiques, la gestion des fichiers ...

Un module est incorporé dans un programme par la commande d'importation
from xxx import *, xxx représente le nom du module.

Les modules se présentent souvent sous forme de fichiers source, avec l'extension .py. Leur visualisation est une excellente source d'apprentissage.

Les listes
Les listes sont une fonction puissante de Python. On peut approximativement les assimiler à des tableaux.
A la différence d'un tableau, les listes ne sont pas typées, c'est-à-dire qu'un poste peut contenir un nombre et le suivant une chaine. Une liste peut à son tour constituer un élément d'une liste.

Il existe plusieurs sortes de listes
  • les listes simples, dites non mutables, parce que les valeurs de leurs éléments ne peuvent être changées (ex: (1, 2, "abcd") ),
  • les tuples, dits listes mutables(ex [1, 2, "abcd"] ),
  • les tableaux associatifs comme en Perl, dits dictionary (ex {"Rouge": "#ff0000", "Vert": "#00ff00"}
On peut ajouter ou enlever des éléments aux listes (méthodes append et del).
Un autre point intéressant est la notion de slice qui permet d'extraire un sous-ensemble d'une liste.

Ex : a=("a", "b", "c", "d", "e")
a[1:3] donne ("b", "c")

La librairie graphique Tk
Cette librairie (module Tkinter) donne accès à des widgets qui représentent des boutons, des listes déroulantes, des boutons radio ... utiles à la création d'une application fenêtrée.

La tâche la plus compliquée est de les disposer dans l'écran de la manière voulue. Il existe pour ceci 3 méthodes
  • pack dispose les widgets sous une forme haut, bas, gauche, droite,
  • grid dispose les widgets sous une forme de tableau en ligne, colonne,
  • place dispose les widgets en indiquant leurs coordonnées (x,y). Hélas, ce mode ne fonctionne pas encore bien.
La programmation objet
L'approche objet est basée sur trois principes.
  • l'encapsulation,
  • l'héritage,
  • le polymorphisme
L'encapsulation
Un programme classique manipule des données, ou variables, à l'aide de code qui constitue des fonctions.
En programmation objet, les données et les fonctions (on dit propriétés et méthodes) sont encapsulées au sein d'un objet. Le grand avantage qui en résulte est une modularité des programmes par le fait que les objets sont indépendants les uns des autres.
Ainsi, une variable i d'un objet ne pourra être écrasée par une variable i utilisée ailleurs dans un autre objet. Même chose pour les fonctions.
Un objet peut être incorporé dans n'importe quel programme puisqu'il transporte avec lui tout ce qui est nécessaire pour fonctionner.

L'héritage
On éprouve parfois le besoin d'avoir des objets différents mais proches cependant pour l'essentiel. Un objet peut hériter des caractéristiques d'un autre objet et en ajouter de nouvelles ou modifier les existantes. J'en donne plus loin un exemple avec des voitures et des limousines : une limousine est aussi une voiture.

Le polymorphisme
Le polymorphisme est le mécanisme qui permet de redéfinir une méthode héritée d'une classe. Ainsi, le même nom désigne une méthode plus adaptée à l'objet dérivé. On y gagne en modularité et en simplicité d'écriture : dans l'exemple évoqué, les voitures et les limousines possèdent une méthode démarrer qui agit un peu différemment dans les deux cas. C'est l'environnement objet qui sélectionne automatiquement la bonne méthode, et non le programmeur.

L'interpréteur
Pour lancer l'interpréteur, se mettre dans le répertoire d'installation et lancer la commande python. On entre alors en mode interactif les commandes, sans oublier l'indentation pour les fonctions complexes (boucles).
Si l'on lance le programme en tapant python xxx.py, le programme xxx.py est éxécuté au lieu de donner la main dans l'interpréteur.


LES EXEMPLES DETAILLESRetour en haut de page

Les exemples présentés ci-après permettent de mettre en oeuvre un certain nombre des possibilités de Python, principalement Tk, Mysql et la programmation objet.
Ils ont pour la plupart leur équivalent en Tcl et Perl. On y constate le parallélisme des méthodes utilisées.

Javanais (java.py) Suiv.

Ce petit jeu consiste à transformer un mot en ajoutant entre une consonne et une voyelle la syllabe AV. Ainsi bonjour donne bavonjavour.

Les ressources nécessaires sont
  • la librairie graphique Tk,
  • les traitements de chaines de caractères

Jeu des cases (cases.py) Préc.Suiv.

Un tableau de 9 cases numérotées de 1 à 9 s'affiche, chaque case étant soit rouge, soit verte. Un clic sur une case change la couleur des cases adjacentes. Le but est d'obtenir toutes les cases vertes, la centrale restant rouge.

Les ressources utilisées pour ce faire
  • la librairie graphique Tk,
  • le tirage de nombres aléatoires,
  • les boites de message,
  • les tuples

Tracé de graphique (graphe.py) Préc.Suiv.

Le programme trace un graphique dans un canevas, à l'aide de lignes droites. Des boutons radio permettent de modifier le coefficient de forme.

Les ressources utilisées dans ce programme
  • la librairie graphique Tk,
  • les fonctions mathématiques sin et cos,
  • les boites de message,
  • les tuples

Base Mysql (cptliv.py et lecliv.py) Préc.Suiv.

Ces programmes accèdent à une base de données Mysql et listent le contenu à l'écran. Ils sont volontairement simples afin de bien isoler les différentes fonctionnalités.

A noter l'utilisation de la fonction print avec ses possibilités de formattage des données.


Gestion de bibliothèque (bibgesaut.py et bibgesautajt.py) Préc.Suiv.

Ces deux programmes constituent l'ébauche d'une application de gestion.

Le sujet choisi est une gestion de bibliothèque. Le premier programme affiche une liste des auteurs, le second permet de créer des auteurs.

Ces programmes ont juste vocation à servir d'exemple de base à partir desquels créer les autres programmes. Ils utilisent pour cela diverses fonctions offertes par Python.

Affichage des auteurs
L'écran se compose de 3 listbox pour présenter les données des auteurs et d'une scrollbar pour faire défiler le contenu. Ces 4 objets sont liés afin de synchroniser le déplacement au sein de la table.

En entête, des radiobutton offrent le choix d'un affichage par n° ou par ordre alphabétique.

En pied de page, 4 boutons donnent accès à d'autres fonctions
  • ajouter un auteur,
  • modifier l'auteur sur lequel le curseur est positionné,
  • supprimer l'auteur sur lequel le curseur est positionné,
  • quitter le programme
Création d'un auteur
L'écran présente les champs de saisie (zones de texte Entry). Au bas de la page, un bouton Valider et un bouton Quitter.

Le n° d'auteur est calculé automatiquement à partir d'un fichier texte.

A faire
L'application est ici très incomplète, non seulement en ce qui concerne les tables à gérer, mais aussi sur certains points techniques non encore résolus :
  • impossibilité d'appeler le second programme à partir du premier par le bouton ajout. Il se produit une fusion des écrans malvenue. C'est pourquoi le second doit être appelé directement
  • les boutons ne réagissent que lorsqu'on clique dessus. En revanche, lorsque le curseur est positionné sur le bouton, la touche Entrée devrait l'activer, par l'entremise des fonctions Bind.

Les ressources utilisées dans ces programmes :
  • la librairie graphique Tk,
  • la base Mysql (select, delete, insert),
  • les boites de message,
  • les chaînes de caractères,
  • le traitement de fichiers textes (lecture, écriture)

Démonstration des classes (clasvoit.py) Préc.

Le programme montre l'utilisation des classes en exploitant les caractéristiques d'encapsulation et d'héritage.

L'exemple se compose de deux classes :

voiture
Une voiture comporte les caractéristiques suivantes :
  • couleur,
  • puissance fiscale,
  • état du moteur : démarré ou arrêté,
  • une fonction pour démarrer le moteur,
  • une fonction pour l'arrêter,
  • une fonction pour afficher l'état du véhicule.
limousine
Une limousine est d'abord une voiture et comporte les caractéristiques supplémentaires suivantes :
  • état de la télévision,
  • une fonction pour allumer la tv,
  • une fonction pour l'éteindre,
  • une fonction pour afficher l'état du véhicule.
La création d'un véhicule s'effectue par l'appel de la classe correspondante, en lui passant en paramètres les caractéristiques voulues. On peut ensuite activer les fonctions de chaque objet créé.

LES OUTILS ET LIENSRetour en haut de page

De l'aide

Le site http://www.python.org est la référence officielle.
On y trouve la documentation en anglais très complète et des versions à télécharger.