Python est un langage de programmation qui a été créé en février 1991 par
Guido van Rossum, un programmeur Hollandais qui travaillait au CWI, le centre national de recherche en mathématiques et informatique des Pays-Bas. C'est un langage qui a été conçu pour être simple, rapide et puissant. C'est maintenant un langage porté par une communauté très active mais également de plus en plus utilisé en entreprises (cf.
l'indice TIOBE qui montre Python en 6e position). C'est de plus un langage libre, et dont l'implémentation officielle (nommée CPython) est diffusée sous une licence proche de la licence BSD. Il était il y a moins d'une semaine sous version 2.5.x depuis le 19 septembre 2006, et est depuis moins de trois jours sorti en version 2.6 qui sera la dernière version numérotée 2.x : en effet, la prochaine version prévue de Python est la version 3.0 qui sera diffusée dans très peu de temps et qui modifiera en profondeur ce langage. Voyons tout d'abord les nouveautés apportées par cette version avant d'étudier plus en détail les efforts mis en place pour la transition de Python 2.x à 3.x, qui sont en fait la plus grande partie des modifications apportées à cette version.
Une version qui apporte son lot de nouveautés
La documentation entièrement remaniée
Un travail énorme a été réalisé par les contributeurs à Python pour réécrire et convertir totalement la documentation pour la rendre plus facilement personnalisable et modifiable : en effet, la documentation des versions précédentes était écrite en

et était ensuite convertie en HTML pour être affichée sur
http://docs.python.org/ . Ce système devenait à la longue trop lourd et pas suffisant pour les besoins du projet. C'est sur ce constat que Georg Brandl, de la team
Pocoo (les mêmes qui ont écrit par exemple
Pygments, utilisé sur le Site du Zéro), s'est lancé dans l'écriture de
Sphinx, un outil de documentation adapté à tous types de projets Python et hautement configurable. Il s'est ensuite chargé de convertir toute la documentation actuelle de

à
reStructuredText, le langage de formatage de texte utilisé, pour ainsi ne rien perdre au passage vers Sphinx.
Notons que ce travail a valu à Georg Brandl un
PSF Community Award, pour récompenser son immense travail et son implication dans la communauté Pythonienne.
Un nouveau module turtle
Le module turtle est une bibliothèque Python très utilisée pour enseigner le langage de manière ludique : il permet de contrôler très facilement une tortue se déplaçant dans une fenêtre et dessinant des traits lors de ses déplacements. Ce principe est basé sur le langage Logo qui était tantôt utilisé dans l'enseignement.
Python 2.6 apporte une toute nouvelle version du module Turtle qui améliore l'animation des déplacements de la tortue dans la fenêtre, notamment au niveau des rotations (qui étaient précédemment gérées via une simple translation de l'image). La surface de dessin s'étend maintenant à l'infini plutôt que d'avoir une taille fixe. De plus, la vitesse de déplacement de la tortue est modifiable plus finement que dans les versions précédentes, où seuls 5 niveaux de vitesse étaient disponibles. Enfin, il est possible de choisir une couleur ou une image pour remplir le fond de la fenêtre qui est par défaut blanc.
L'instruction with
Une nouvelle instruction a été rajoutée dans Python 2.6 : déjà prévue à l'origine pour Python 2.5, la mise en place de
with a enfin été terminée pour cette dernière version de Python. Elle permet de remplacer dans certains cas le triplet try... except... finally pour gérer les exceptions tout en fermant correctement les ressources.
Pour plus d'informations sur cette instruction, reportez-vous au
tutoriel de Natim et moi sur les pratiques avancées en Python, qui parle rapidement de l'instruction with et de son utilisation concrète pour gérer l'ouverture d'un fichier.
De nouveaux modules et d'autres retirés
Ajouts :
- Le module ast permet de transformer du code source en arbre syntaxique abstrait (aussi appelé AST), et également de compiler cet arbre en code Python exécutable : ainsi, il est possible de créer son propre préprocesseur Python pour transformer du code en autre chose.
- Le module json permet d'exporter et d'importer des données formatées au format JSON, très utilisé sur le web car il est utilisable très facilement avec Javascript.
Retraits :
- Les modules buildtools, cfmfile, md5, MimeWriter, mimify, popen2, posixfile, sets et sha ne doivent plus être utilisés et émettrons un warning en cas d'utilisation. Ils seront retirés dans la prochaine version.
- Les modules gopherlib, rgbimg et macfs étaient déconseillés dans Python 2.5 est sont donc en conséquence retirés de Python 2.6.
Python 2.6 : une préparation à Python 3.0
Il faut savoir que dès le début, Python 2.6 avait été prévu comme une version permettant une transition facile vers Python 3.0. Dans ce but, plusieurs choses ont été réalisées et font bien leur travail.
Une sortie synchronisée
Tout d'abord, c'est quelque chose d'assez important mais qui n'est pas assez remarqué : les versions 2.6 et 3.0 sortent à des dates presque synchronisées : deux semaines d'intervalle contre 2 ans entre Python 2.5 et Python 2.6. À l'origine, l'objectif était même de rendre Python 2.6 disponible en même temps que Python 3.0.
L'ajout du type bytes
Une des principales fonctionnalités et différences entre Python 2.x et Python 3.0 est le changement des types de chaînes de caractères : alors que dans Python 2.x
str représentait une chaîne d'octets et
unicode une chaîne de caractères unicodes, Python 3.0 considére maintenant qu'une chaine d'octets est de type
bytes et les chaînes de caractères une
string. Ainsi, pour faciliter la transition, Python 2.6 ajoute un type
bytes par défaut qui pointe vers le type
str.
L'option -3 de l'interpréteur
De nombreuses fonctionnalités de Python 2.x disparaîtront dans Python 3.0 (notamment des fonctions et modules standards), et d'autres fonctionnalités apparaîtront parallèlement. Pour prévenir les incompatibilités, l'interpréteur Python 2.6 ajoute une nouvelle option,
-3, qui envoie des warnings lors de l'utilisation : ainsi, si par exemple le code interprété utilise la fonction
reduce, Python 2.6 préviendra que la fonction sera remplacée dans Python 3.0 par la fonction
functools.reduce. Il est bien entendu plus que recommandé de corriger ces warnings pour éviter de se compliquer la tâche lors de la conversion du code pour Python 3.0.
L'utilitaire 2to3
C'est le plus gros effort qui a été fait pour faciliter le portage de code de Python 2.x à Python 3.0 : 2to3, comme son nom l'indique plus ou moins, est fait pour convertir du code pour Python 2.x automatiquement vers Python 3.0, et cela sans aucune difficulté. Certains problèmes subsistent cependant lors du portage de codes complexes : dans ce cas, il est conseillé de revoir le code pour Python 2.x plutôt de que de modifier l'output du script : ce genre de problèmes vient la plupart du temps de mauvaises pratiques de programmation.
Liens relatifs
Voilà qui conclut cette news sur une nouvelle version plus ou moins intéressante de Python au niveau des fonctionnalités, mais qui prépare efficacement à la sortie de Python 3.0 dans moins d'un mois (pour laquelle vous aurez bien entendu encore le droit à une superbe news de ma part, ça va de soi

). Notez que Python devient un langage de plus en plus intéressant à connaître dans le monde professionnel du fait de sa réputation montant en flèche depuis quelques années, au même titre que C++, Java ou PHP.