Python livre pour debuter la programmation avec le language

Python livre pour débuter la programmation avec le language
…
1.2.1 Histoire résumée
Python est un langage objet interprété de haut niveau, il a été créé au début des années quatre-vingt-dix par Guido Van Rossum. Entre 1995 et 2001, Rossum a changé plusieurs fois de travail tout en continuant l’élaboration du langage Python. En 2001, la PSF (Python Software Foundation) est créée. Il s’agit d’une organisation à but non lucratif détenant les droits de propriété intellectuelle de Python. Il est depuis distribué sous forme de logiciel libre. Python est couvert par sa propre licence 3. Toutes les versions depuis la 2.0.1 sont compatibles avec la licence GPL 4. Selon Wikipedia5, Rossum travaillerait maintenant pour l’entreprise Google qui propose une plate-forme de développement de sites web en Python6 et qui héberge de nombreux projets en langage Python via son projet Google Codez.
1.2.2 Le langage en quelques points
On distingue plusieurs classes parmi les langages informatiques selon la syntaxe qu’ils proposent ou les possibilités qu’ils offrent. Python est un langage : interprété, orienté objet, de haut niveau, modulaire, à syntaxe positionnelle, au typage dynamique.
Le langage Python est dit interprété car il est directement exécuté sans passer par une phase de compilation qui traduit le programme en langage machine, comme c’est le cas pour le langage C. En quelque sorte, il fonctionne autant comme une calculatrice que comme un langage de programmation. Afin d’accélérer l’exécution d’un programme Python, il est traduit dans un langage intermédiaire 8 qui est ensuite interprété par une machine virtuelle Python. Ce mécanisme est semblable à celui propre au langage Java.
Le langage est orienté objet car il intègre le concept de classe ou d’objet. Un objet regroupe un ensemble de données et un ensemble de fonctionnalités attachées à ces données. Ce concept relie la description des données et les algorithmes qui leur sont appliqués et les rend indissociables. Un objet est en quelque sorte une entité autonome avec laquelle on peut communiquer via une interface.
On considère que le langage Python est de haut niveau car il propose des fonctionnalités avancées et automatiques comme le garbage collecting. Cette tâche correspond à la destruction automatique des objets lorsqu’ils ne sont plus utilisés. Cette fonctionnalité est proposée par la plupart des langages de script ou encore Java mais pas C++. Il propose également des structures de données complexes telles que des dictionnaires, éloignées des types numériques standards.

Le langage Python est modulaire. La définition du langage est très succincte et autour de ce noyau concis, de nombreuses librairies ou modules ont été développées. Python est assez intuitif. Etre à l’aise avec ce langage revient à connaître tout autant sa syntaxe que les nombreux modules disponibles. Comme il est assez simple de construire un pont entre Python et C++, de nombreux projets open source antérieurs à Python sont maintenant accessibles dans ce langage et sous toutes les plateformes.
Le langage Python est à syntaxe positionnelle en ce sens que l’indentation fait partie du langage. Le point virgule permet de séparer les instructions en langage C, l’accolade permet de commencer un bloc d’instructions. En Python, seule l’indentation permet de marquer le début et la fin d’un tel bloc, ce procédé consiste à décaler les lignes vers la droite pour signifier qu’elles appartiennent au même bloc d’instructions et qu’elles doivent être exécutées ensemble. Cette contrainte rend les programmes Python souvent plus faciles à lire.
Le langage Python est à typage dynamique. Le type d’une variable, d’une donnée est définie lors de l’exécution du programme. Chaque information est désigné par un identificateur qui est manipulé tout au long du programme. Le fait que telle ou telle opération soit valide est vérifiée au moment où elle doit être réalisée et non au moment où le programme est traduit en langage machine.
1.2.3 Avantages et inconvénients du langage Python
Alors qu’il y a quelques années, le langage C puis C++ s’imposaient souvent comme langage de programmation, il existe dorénavant une profusion de langages (Java, JavaScript, PHP, Visual Basic, Perl, PHP, ...). Il est souvent possible de transposer les mêmes algorithmes d’un langage à un autre. Le choix approprié est bien souvent celui qui offre la plus grande simplicité lors de la mise en œuvre d’un programme même si cette simplicité s’acquiert au détriment de la vitesse d’exécution. Le langage PHP est par exemple très utilisé pour la conception de sites Internet car il propose beaucoup de fonctions très utiles dans ce contexte bien que, dans ce domaine, le langage Python soit une solution alternative très intéressante.
Comme la plupart des langages, le langage Python est tout d’abord portable puisqu’un même programme peut être exécuté sur un grand nombre de systèmes d’exploitation comme Linux, Microsoft Windows, Mac OS X... Python possède également l’avantage d’être entièrement gratuit tout en proposant la possibilité de pouvoir réaliser des applications commerciales à l’aide de ce langage.
Si le langage C reste le langage de prédilection pour l’implémentation d’algorithmes complexes et gourmands en temps de calcul ou en capacités de stockage, un langage tel que Python suffit dans la plupart des cas. De plus, lorsque ce dernier ne convient pas, il offre toujours la possibilité, pour une grande exigence de rapidité, d’intégrer un code écrit dans un autre langage tel que le C/C++9 ou Java, et ce, d’une manière assez simple. La question du choix du langage pour l’ensemble d’un projet est souvent superflue, il est courant aujourd’hui d’utiliser plusieurs langages et de les assembler. Le langage C reste incontournable pour concevoir des applications rapides, en revanche, il est de plus en plus fréquent d’"habiller" un programme avec une interface graphique programmée dans un langage tel que Python.
En résumé, l’utilisation du langage Python n’est pas restreinte à un domaine : elle comprend le calcul scientifique, les interfaces graphiques, la programmation Internet. Sa gratuité, la richesse des extensions disponibles sur Internet le rendent séduisant dans des environnements universitaire et professionnel. Le langage est vivant et l’intérêt qu’on lui porte ne décroît pas. C’est un critère important lorsqu’on choisit un outil parmi la myriade de projets open source. De plus, il existe différentes solutions pour améliorer son principal point faible qui est la vitesse d’exécution.
1.3 Installation du langage Python 1.3.1 Installation du langage Python

Python a l’avantage d’être disponible sur de nombreuses plates-formes comme Microsoft Windows, Linux ou Mac OS X. L’installation sous Windows est simple. Le langage Python est déjà intégré aux systèmes d’exploitation Linux et Mac OS X.
Sous Microsoft Windows, il suffit d’exécuter le fichier Python-2.5.2.msi10 ou tout autre version plus récente. En règle générale, il est conseillé de télécharger la der-nière version stable du langage, celle avec laquelle le plus grande nombre d’extensions seront compatibles. Les options d’installation choisies sont celles par défaut, le répertoire d’installation est par défaut C:/Python25. A la fin de cette installation apparaît un menu supplémentaire dans le menu Démarrer (ou Start) de Microsoft Windows comme le montre la figure 1.1. Ce menu contient les intitulés suivant :
IDLE (Python GUI) éditeur de texte, pour programmer
Module Docs pour rechercher des informations dans la docu
mentation
Python (command line) ligne de commande Python
Python Manuals documentation à propos du langage Python
Uninstall Python pour désinstaller Python
La documentation (de langue anglaise11) décrit en détail le langage Python, elle inclut également un tutoriel 12 qui permet de le découvrir. La ligne de commande (voir figure 1.2) permet d’exécuter des instructions en langage Python. Elle est pratique pour effectuer des calculs mais il est nécessaire d’utiliser un éditeur de texte pour écrire un programme, de le sauvegarder, et de ne l’exécuter qu’une fois terminé au lieu que chaque ligne de celui-ci ne soit interprétée immédiatement après qu’elle a été écrite comme c’est le cas pour une ligne de commande.

Figure 1.2 : Ligne de commande, la première ligne affecte la valeur 3 à la variable x, la seconde ligne l’affiche.
1.3.2 Particularité de Mac OS X et Linux
Le langage Python est déjà présent sur les ordinateurs d’Apple si ceux-ci sont équipés du système d’exploitation Mac OS X. Il est également présent dans les distributions Linux. L’installation de Python est parfois rendue nécessaire si on désire utiliser la dernière version du langage. L’installation des extensions du langage est similaire à celle d’autres extensions Linux.
Il ne faut pas oublier de vérifier la version du langage Python installée sur l’ordinateur Linux et Mac OS X. Il suffit pour cela de taper la ligne help() pour en prendre connaissance. Cela signifie que toutes les extensions qui doivent être installées doivent l’être pour cette version qu’il est néanmoins possible de mettre à jour
ls
cette version
1.3.3 Utilisation de l’éditeur de texte
La figure 1.1 montre le menu installé par Python dans le menu "Démarrer" de Microsoft Windows. En choisissant l’intitulé "IDLE (Python GUI)", on active la fenêtre de commande de Python(voir figure 1.3). Les instructions sont interprétées au fur et à mesure qu’elles sont tapées au clavier. Après chaque ligne, cette fenêtre de commande conserve la mémoire de tout ce qui a été exécuté. Par exemple :
>>> x = 3 >>> y = 6 >>> z = x * y >>> print z 18

>>>
Après l’exécution de ces quelques lignes, les variables 14 x, y, z existent toujours. La ligne de commande ressemble à une calculatrice améliorée. Pour effacer toutes les variables créées, il suffit de redémarrer l’interpréteur par l’intermédiaire du menu Shell–>Restart Shell. Les trois variables précédentes auront disparu.
Il n’est pas possible de conserver le texte qui a été saisi au clavier, il est seulement possible de rappeler une instruction déjà exécutée par l’intermédiaire de la combinaison de touches ALT + p, pressée une ou plusieurs fois. La combinaison ALT + n permet de revenir à l’instruction suivante. Pour écrire un programme et ainsi conserver toutes les instructions, il faut d’actionner le menu File–>New Window qui ouvre une seconde fenêtre qui fonctionne comme un éditeur de texte (voir figure 1.4).
Après que le programme a été saisi, le menu Run–>Run Module exécute le programme. Il demande au préalable s’il faut enregistrer puis réinitialise l’interpréteur Python pour effacer les traces des exécutions précédentes. Le résultat apparaît dans la première fenêtre (celle de la figure 1.3). La pression des touches "Ctrl + C" permet d’arrêter le programme avant qu’il n’arrive à sa fin.
Remarque 1.7 : fenêtre intempestive
Si on veut se débarrasser de cette fenêtre intempestive qui demande confirmation pour enregistrer les dernières modifications, il suffit d’aller dans le menu Options–>Configure IDLE et de choisir No prompt sur la quatrième ligne dans la rubrique General (voir figure 1.5). Ce désagrément apparaît sur la plupart des éditeurs de texte et se résout de la même manière.
Cette description succincte permet néanmoins de réaliser puis d’exécuter des programmes. Les autres fonctionnalités sont celles d’un éditeur de texte classique, notamment la touche F1 qui débouche sur l’aide associée au langage Python. Il est possible d’ouvrir autant de fenêtres qu’il y a de fichiers à modifier simultanément.
Néanmoins, il est préférable d’utiliser d’autres éditeurs plus riches comme celui proposé au paragraphe 1.4.1. Ils proposent des fonctions d’édition plus évoluées que l’éditeur installé avec Python.
1.4 Installation d’un éditeur de texte 1.4.1 Editeur SciTe

Il existe de nombreux éditeurs de texte, payants ou gratuits. Le premier proposé dans ce livre est SciTe, il est gratuit et fonctionne avec de nombreux compilateurs de langages différents (voir figure 1.6). L’éditeur SciTe15 est léger et son utilisation ne nécessite pas de droits spécifiques 16. La gestion des erreurs est également plus pratique puisqu’il est possible de cliquer sur une erreur pour que l’éditeur positionne automatiquement le curseur sur la ligne ayant généré cette erreur.
Une fois installé, il faut configurer l’éditeur de manière à ce qu’il puisse utiliser le compilateur Python. Il faut cliquer sur le menu Option et choisir la rubrique Open python.properties (voir figure 1.6).
Après avoir sélectionné ce menu, un fichier texte s’ouvre. Vers la fin, on trouve les lignes suivantes qui contiennent la ligne de commande qui permet d’exécuter un programme Python :
if PLAT_WIN
command.go.*.py=python -u "$(FileNameExt)" command.go.subsystem.*.py=0 command.go.*.pyw=pythonw -u "$(FileNameExt)" command.go.subsystem.*.pyw=1
Il suffit de préciser le répertoire où se trouve l’interpréteur qui devrait être c : /python25 sur Microsoft Windows si le répertoire d’installation par défaut du langage Python n’a pas été modifié.
if PLAT_WIN
command.go.*.py=c:\python25\python -u "$(FileNameExt)" command.go.subsystem.*.py=0 command.go.*.pyw=c:\python25\pythonw -u "$(FileNameExt)" command.go.subsystem.*.pyw=1
Une fois ce fichier enregistré, il ne reste plus qu’à écrire un programme Python. Une fois terminé, la touche F5 lance son exécution. L’exemple de la figure 1.7 montre un cas où l’exécution a été interrompue par une erreur.

Le site Internet de SciTe propose quelques trucs et astuces pour configurer l’éditeur à votre convenance. Comme à peu près tous les logiciels, il dispose d’une rubrique FAQ 17 (Frequently Asked Questions) qui recense les questions et les réponses les plus couramment posées. Cette rubrique existe pour la plupart des éditeurs et plus généralement pour la plupart des applications disponibles sur Internet.
1.4.2 Python Scripter
Le second éditeur proposé dans ce livre est Python Scripter18 (voir figure 1.8). Il est plus lourd mais offre plus de fonctionnalités notamment un débugger qui permet d’exécuter pas à pas un programme afin de vérifier chaque ligne de son exécution. Lorsqu’un programme produit de mauvais résultats, la première solution consiste à afficher de nombreux résultats intermédiaires mais cela nécessite d’ajouter des instructions un peu partout dans le programme. La seconde méthode est l’utilisation du débugger. Sans modifier le code informatique, il est possible d’arrêter temporairement l’exécution à une ligne donnée pour inspecter le contenu des variables à cet instant de l’exécution. Ce logiciel fonctionne sans autre manipulation supplémentaire autre que son installation.
Figure 1.8 : Copie d’écran de l’éditeur Python Scripter.
Cet éditeur, contrairement à SciTe, ne fonctionne qu’avec Python et ne peut être utilisé avec d’autres langages. Son apparence est adaptée au développement. Il permet également de voir la liste des variables, fonctions, classes, présentes dans un programme.
1.4.3 Eclipse et PyDev
Eclipse 19 est un environnement complet de développement adapté à une multitude de langages dont Python via une extension appelé PyDev20. Cette solution s’adresse
plus à des gens ayant déjà une expérience en informatique ou souhaitant construire un projet conséquent. En constante évolution, Eclipse est un éditeur très complet mais son utilisation nécessite un apprentissage non négligeable qui n’est pas indispensable pour des projets de petite taille.
1.4.4 Côté Mac OS X : TextWrangler

Un éditeur possible est TextWrangler21 qui est gratuit. Lorsqu’on programme à la fois sous Microsoft Windows et Linux ou Mac OS X, les fichiers contiennent des codes de fins de lignes différents et l’éditeur vous le fait remarquer à chaque exécution. Pour éviter ce désagrément, il convient d’écraser le fichier contenant le programme en le sauvegardant à nouveau en prenant soin de choisir des fins de lignes identiques à celles du monde Linux. Linux fait également la différence entre les minuscules et les majuscules en ce qui concerne les noms de fichiers contrairement à Microsoft Windows.
1.4.5 Autres éditeurs
Certains éditeurs de texte sont eux-mêmes écrits en Python, ce qui leur permet de fonctionner sur toutes les plates-formes. Trois sont assez connues, DrPython22, Boa Constructor23, The Eric Python IDE24. Ce dernier s’appuie sur une interface graphique de type pyQt 25, son interface est riche, presque trop lorsqu’on commence à programmer. Boa Constructor s’appuie sur wxPython et offre des outils permettant de dessiner des interfaces graphiques. DrPython est le plus simple des trois.
Certains éditeurs connus du monde Linux ont été déclinés pour le monde Windows, c’est le cas de Emacs 26. SciTe est souvent utilisé car c’est le plus simple. Les autres offrent des fonctionnalités variées dont l’utilité n’apparaît que pour des programmes conséquents. Le site officiel 27 répertorie d’autres éditeurs de texte dont certains sont de véritables environnements de développements. Il n’est pas aberrant d’en utiliser plus d’un car chacun d’eux est plus approprié dans telle situation ou pour tel type de programme.
1.4.6 Tabulations
De nombreux éditeurs utilisent les tabulations pour mettre en forme un programme et tenir compte des décalages (indentation) d’un bloc par rapport à un autre. Il est conseillé de remplacer ces tabulations par des espaces, cela évite les confusions et les mauvaises interprétations lorsque tabulations et espaces sont mélangés. La taille d’une tabulation peut varier d’un éditeur à l’autre contrairement aux espaces.
1.5 Premier programme
Après avoir installé le langage Python ainsi qu’un éditeur, il suffit d’écrire quelques lignes pour vérifier que cette première étape s’est achevée correctement. Tous les programmes Python porte l’extension .py.
1.5.1 Afficher le résultat d’un calcul

Le programme suivant, qu’on peut appeler premier.py, affiche le message premier message une fois qu’il est exécuté. Le mot-clé print précédant le message - toujours entre guillemets ou entre apostrophes sauf si ce sont des nombres - stipule qu’il faut afficher quelque chose.
print "premier message"
Un programme ne barbouille pas l’écran de texte indésirable, il n’affiche que ce que le programmeur lui demande d’afficher et cette intention se matérialise grâce à l’instruction print. On peut ensuite écrire quelques lignes qu’on pourrait également taper sur une calculatrice :
print 3.141592 * 5*5 print 3.141592 * 5**2
Ces deux lignes affichent 78.5398 qui est la surface d’un cercle de 5 mètres de côté. Le symbole ** correspond à l’opération puissance. Il existe une constante PI ou π mais qui ne fait pas partie du langage lui-même : elle est définie dans une extension interne 28 du langage qui contient bon nombre de fonctions mathématiques telles que les cosinus, sinus...
from math import * # permet d’utiliser les extensions mathématiques de Python print pi * 5**2
1.5.2 Les accents
Le langage Python est conçu pour le monde anglophone et l’utilisation des accents ne va pas de soi. Le programme suivant qui demande d’afficher un message contenant un accent provoque l’apparition d’une erreur :
print "accentué"

L’erreur est la suivante :
File "essai.py", line 1
SyntaxError: Non-ASCII character ’\xe9’ in file i.py on line 1, but no encoding declared;
Dans ce cas, il faut ajouter une ligne placée en première position qui précise que des accents pourront être utilisés. L’exécution du programme qui suit ne soulève aucune erreur.
# -*- coding: latin-1 -* print "accentué"
Cette ligne précise en fait que l’interpréteur Python doit utiliser un jeu de caractères spécial. Ces jeux de caractères ont parfois leur importance, les navigateurs n’aiment pas trop les accents au sein des adresses Internet : il est parfois préférable de ne pas utiliser d’accents sur les sites de réservations d’hôtels, de trains ou d’avions.
Par défaut, l’interpréteur Python utilise le jeu de caractères le plus réduit, il faut lui préciser qu’il doit en utiliser un plus étendu incluant les accents. On trouve également sous Microsoft Windows la syntaxe équivalente suivante :
# -*- coding: cp1252 -* print "accentué"
Enfin, s’il fallait utiliser des caractères autres que latins, il faudrait alors choisir le jeu de caractères utf − 8 qui s’appliquent aussi aux langues orientales.

# -*- coding: utf-8 -* print "accentué"
A cause des accents, la plupart des exemples cités dans ce livre ne fonctionnent pas sans cette première ligne qui a parfois été enlevée lors de l’impression pour des questions de lisibilité. Il faut penser à l’ajouter pour reproduire les exemples. Le paragraphe ?? page ?? est plus complet à ce sujet.
Remarque 1.8 : #!/usr/local/bin/python
Sur Internet, on trouve de nombreux exemples commençant par la ligne suivante :
#!/usr/local/bin/python
On rencontre souvent cette ligne pour un programme écrit sur une machine Linux, elle indique l’emplacement de l’interpréteur Python à utiliser.
1.6 Installation d’extensions (ou modules externes)
Les extensions ou modules ou packages sont des bibliothèques de fonctions non standard. Ce sont souvent des programmes existant conçus dans un autre langage tel que C++ et qui ont été "coiffés" d’une interface permettant de les utiliser sous Python. Les paragraphes qui suivent décrivent quelques extensions couramment utilisées. Certains besoins reviennent fréquemment comme dessiner un graphe, charger une image, faire du calcul matriciel et Python seul ne permet pas de répondre à ce problème.
La première information à connaître avant d’installer un package est la version du langage Python installée sur votre ordinateur. Il faut impérativement utiliser la version du module élaborée pour la même version 29. Il est nécessaire de connaître également le système d’exploitation de votre ordinateur.

Par conséquent, il ne faut pas installer le module scipy (calcul scientifique) élaboré pour Python 2.5 alors que sur votre ordinateur est installée la version 2.4, il y a de fortes chances que cela ne fonctionne pas. Certains modules dépendent d’autres, lors de leur installation, il faut vérifier que les modules dont ils dépendent ont été préalablement installés.
Le site officiel 30 recense une longue liste de modules existants (plusieurs centaines). Il recense également les dernières mises à jour. Un autre site fait de même, Vault Parnassus31, avec une présentation différente. Avant de commencer à programmer, il est conseillé d’aller chercher sur ces sites si un module n’aurait pas déjà fait une partie du travail.
Il est parfois intéressant de consulter des forums d’échanges entre programmeurs autour de Python. Il est parfois plus intéressant de jeter un œil sur de tels sites 32 avant de se lancer dans la recherche d’un module spécifique. Internet fournit également de nombreux exemples de programmes dont on peut s’inspirer.
Les modules cités dans ce paragraphe ne sont pas installés automatiquement avec le langage Python mais sont parfois très utiles dans le cadre d’un travail d’ingénieur. Ils existent depuis plusieurs années et sont pour la plupart régulièrement maintenus à jour. Ils sont tous facilement accessibles depuis un moteur de recherche.
1.6.1 Graphisme
matplotlib 33 : ce module reprend la même logique que le logiciel MatLab ou Octave. Pour ceux que la finance intéresse, il comporte également des fonctions qui permettent de récupérer des historiques quotidiens de cours d’actions depuis le site Yahoo ! Finance 34.
biggles 35 : ce module permet de dessiner des courbes (2D, 3D) et de convertir des graphiques sous forme d’images de tout format. Ce module nécessite l’installation de fichiers supplémentaires (libpng, zlib, plotutils) 36.
pydot 37 : ce module propose le dessin de graphes dans une image (arbre généalogique, réseau de distribution, ...). Le module pydot permet de dessiner tout type de graphe. Ce module nécessite un autre module pyparsing38 et une application Graphviz39.