Catégories: Python | Langage | Article
Découverte de Python, 1ère partie
Un article de ToutProgrammer.com.
Alors que PHP s'ancre de plus en plus dans le monde des développeurs, d'autres langages de script tiennent encore leur place. C'est le cas par exemple avec Python, langage créé à la fin des années 80. Erwan Loisant nous propose un premier article pour découvrir le langage Python.
Sommaire |
[modifier] Introduction
Vous avez sûrement entendu parler de ce langage populaire dans le milieu de l'Open Source. Si vous n'avez pas encore goûté à cette merveille, cette série d'articles est destinée à vous faire découvrir combien il est facile de faire des applications avancées dans un confort de développement inégalé.
Cet article est le premier d'une série destinée à faire de vous de vrais programmeurs Python.
[modifier] Python... Pourquoi ?
[modifier] Un langage de script
Python est un langage de script (au même titre que Perl, Lisp, Prolog et bien d'autres), ce qui signifie que les programmes ne sont pas compilés en exécutables mais interprétés, ligne par ligne, par un programme appelé justement l'interpréteur.
Les intérêts d'un langage interprété sont multiples. D'une part le cycle de développement est considérablement simplifié puisqu'il n'est pas nécessaire de compiler le programme, donc d'écrire un Makefile décrivant toutes les dépendances. Sous XEmacs par exemple, en mode Python, une simple pression de Ctrl-c-c permet d'interpréter le tampon (buffer) courant. Cependant, l'avantage décisif d'un langage interprété sur un langage compilé est qu'il permet de faire des opérations de bien plus haut niveau (nous découvrirons cela par la suite). De même, la gestion de la mémoire est bien plus automatisée. En contre-partie, les performances sont moindres.
[modifier] Python et Perl
Perl est certainement le principal concurrent de Python. En effet, ces deux langages constituent à eux deux la majeure partie des développements en langage interprété.
Je propose donc une comparaison rapide :
- l'un comme l'autre dispose d'un ensemble très riche de bibliothèques, allant de l'interface graphique au web, en passant par les bases de données,
- Perl a une syntaxe proche du script shell, Python proche du C,
- les plus fervents défenseurs de Perl le reconnaissent, il est très difficile de lire du Perl (même pour l'auteur du code lui-même),
- Perl a été développé suivant une approche pragmatique, pour permettre à chacun de faire ce qu'il veut comme il le veut. Python a une approche plus "puriste" encourageant les développeurs à suivre une philosophie commune, et les mêmes bases théoriques.
[modifier] Tour d'horizon
Python est installé par défaut dans la majorité des distributions Linux, pour tester les instructions Python je vous propose donc d'ouvrir l'interprèteur en ligne de commande en tapant dans un shell la commande "python".
La syntaxe étant proche du C, vous ne serez pas perdus si vous connaissez ce langage. Cependant, la ressemblance s'arrête ici. Voyons quelques règles fondamentales de Python :
- les variables sont typées,
- les variables ne se déclarent pas, elles sont créées à leur première utilisation,
- il existe des types mutables (modifiables) comme les listes et des types non-mutables (comme les n-uplets). Ainsi le n-uplet (3,2,5), qui peut par exemple représenter un point d'un espace tri-dimensionnel, est tout aussi constant que le nombre 4, qui représente un point d'un espace mono-dimensionnel,
- il n'y a pas de séparateur d'instruction,
- il n'y a pas de séparateur de blocs, ceux-ci sont déterminés par l'indentation.
Voyons tout de suite une illustration de ce dernier point : la structure conditionnelle if.
>>> toto = 1 >>> if toto == 1: print "Oui, toto est unitaire."
La boucle whileest de même nature, par contre la boucle forest plus intéressante. Elle ne se base pas comme dans d'autres langages sur une incrémentation, mais elle parcourt une liste.
>>> for logiciel in mslist print "Avez-vous bien payé votre licence", logiciel, "?"
Ceci, allié à la puissance de la gestion des listes par Python rend la programmation vraiment aisée. Notez qu'il est toujours possible de produire une boucle for plus classique avec la fonction range(début,fin) qui produit une liste de valeurs consécutives.
[modifier] Les fonctions
Il est très simple de définir une fonction en Python :
>>>def carre(x): "Calcule le carré d'un nombre" return x * x
C'est tout ! Notez qu'il est recommandé de commencer la définition de la fonction par une chaîne. Cette chaîne sera alors la chaîne de documentation de la fonction, utilisée par des outils de génération de documentation ou des shells python avancés.
[modifier] Un exemple : les palindromes
Afin de montrer comment Python simplifie la programmation, je propose un cas d'école : la détection des palindromes. Je rappelle qu'un palindrome est un mot qui peut se lire aussi bien de gauche à droite que de droite à gauche. Exemples : "été", "non", "1367631 = 111 * 111 * 111 = 1367631"... Par extension on peut parler de palindrome en ignorant les espaces et les accents : "Tu l'as trop écrasé césar ce port salut".
[modifier] La récursivité
Cet exemple me permet d'introduire la récursivité. Ce n'est pas propre à Python (il est même possible d'écrire des fonctions récursives en C) mais c'est généralement dans les langages de scripts que la récursivité prend tout son intérêt. Le principe est simple : une fonction s'appelle elle-même. Cela signifie qu'il faut raisonner de la façon suivante : si je suppose que le problème est résolu pour une taille "n", comment puis-je le résoudre pour "n+1" ? Il suffit ensuite de traiter le cas initial, pour n=0 ou n=1 qui est généralement trivial.
def palindrome(chaine): """Teste si une chaîne est un palindrome""" if len(chaine)<2: return 1 else: return chaine[0] == chaine[-1] and palindrome (chaine[1:-1])
Explications:
- len(chaine) renvoie la longueur d'une chaîne,
- chaine[0] renvoie le premier élément de la chaîne,
- chaine[-1] renvoie le dernier élément de la chaîne,
- chaine[1 :-1] renvoie la sous-chaîne privée du premier et du dernier élément.
[modifier] Épilogue
Ce premier tour d'horizon devrait vous donner une première idée de l'intérêt de Python. J'ajouterai qu'il existe de nombreuses bibliothèques pour faire du traitement d'image, de la synthèse d'images 3D, de l'accès aux bases de données et au web... Clairement, contrairement à ce qu'on pourrait penser pour un langage si haut niveau, il n'y a pas de limites au champ d'application.
Si vous voulez vraiment vous mettre à Python, il existe un tutoriel très bien écrit (en anglais) bien plus long et complet que cet article.
Je vous souhaite un bon "codage"...
[modifier] Historique de l'article
Cet article, réalisé par Erwan LOISANT, a été publié pour la première fois le 27 juin 2002 sur le site LinuxFrench.net sous licence Creative Commons License Non Commerciale.

