Blog Python Django
Blog Test Logiciel
Blog réalisation site internet

Quoi de neuf avec Python 2.7?

La fondation Python a annoncé ce 10 avril la disponibilité de la version Beta 1 de Python 2.7. Cette version est la dernière version majeure de la série 2.x (au moins pour une période de 5 ans) qui restera cependant supportée par la communauté en particuliers pour les correctifs. Que faut-il donc attendre de cette nouvelle version de notre langage préféré?

Comme vous le savez surement, deux versions de Python coexistent, Python 2 et 3. Python 2 a atteint un excellent niveau de maturité mais souffre de certains défauts originels qui restent dans le langage pour des raisons de compatibilité. Le but de Python 3 est de nettoyer le code au coût d'une incompatibilité avec la version 2. Heureusement un outil de conversion permet de migrer du code d'une version à l'autre quasiment automatiquement.

Depuis la version 2.6, les nouvelles versions de Python bénéficient des nouveautés et améliorations apparues lors du développement de la version 3. C'est encore le cas pour Python 2.7

Les dictionnaires ordonnés

Python 2.7 apporte ainsi un nouveau type de données, les dictionnaires ordonnés qui assurent que les éléments sont parcourus dans leur ordre d'inclusion.

>>> from collections import OrderedDict
>>> d = OrderedDict([('first', 1), ('second', 2),
... ('third', 3)])
>>> d.items()
[('first', 1), ('second', 2), ('third', 3)]

Ce qui n'est pas le cas avec un dictionnaire "classique"

>>> d = {'first':1, 'second': 2,  'third': 3}
>>> print d.items()
[('second', 2), ('third', 3), ('first', 1)]

On bénéficie donc avec ce nouveau type d'objet des avantages du dictionnaire et de la liste. Comme beaucoup d'autres je pense, j'ai parfois recréée moi-même ce comportement au prix d'une certaine complexité. Les dictionnaires ordonnées me paraissent donc très utiles.

Un code plus lisible pour les séquences with imbriquées

with permet de gérer la réservation et la libération des resources pour un contexte. Par exemple, le code suivant:

f = open('fichier.txt')
try:
    for l in f.readlines():
        ...
finally:
    f.close()

Peut s'écrire de manière plus explicite avec un résulat identique:

with open('fichier.txt') as f:
    for l in f.readlines():
        ...

Cette fonctionnalité très pratique, faut-il rappeler que la lisibilité du code est un des atouts de Python, est disponible depuis la version 2.5. Mais jusqu'alors l'utilisation de plusieurs with obligeait à uitiliser des with imbriqués rendant le code moins lisible 

 

with A() as a:
with B() as b:
...

Python propose une solution plus élégante en 2.7:

with A() as a, B() as b:
...

Amélioration du formattage des chaînes de caractères

Python propose depuis Python 2.6 une méthode format pour la classe str (chaîne de caractères) qui permet un formattage plus élégant que le traditionnel % hérité du printf du C.

Par exemple:

>>> '{0}={0}'.format(2)
'2=2'

permet de ne pas répéter les arguments au contraire du formattage par %

>>> '%d=%d' % (2, 2)
'2=2'

Parfois, l'obligation de spécifier l'index de l'argument peut paraître inutile et alourdir le format. Python 2.7 propose donc une numérotation automatique des index de format pour éviter ce problème:

>>> '{}:{}:{}'.format(2009, 4, 'Sunday')
'2009:4:Sunday'
>>> '{}:{}:{day}'.format(2009, 4, day='Sunday')
'2009:4:Sunday'

Un module de tests unitaires amélioré

Le module unittest pour les tests untaires a aussi été amélioré : la distinction des erreurs entre échec et succès inattendu, l'arrivée d'une exception SkipTest pour sauter un test, la possibilité d'un message de description de l'erreur pour les assertTrue et assertFalse, ainsi que une flopée de nouvelles méthodes 'assert' pour les vérifications... Python 2.7 apporte un grand nombre d'améliorations pour faciliter encore plus l'écriture de tests unitaires.

Voici donc quelques unes des nouveautés de Python 2.7 qui m'ont paru très intéressantes. Cette version en contient d'autres dont la liste complète est disponible dans la documentation : http://docs.python.org/dev/whatsnew/2.7.html dont j'ai tiré plusieurs exemples de cet article et dont je vous conseille la lecture.

PS: Ceci est une 2nde édition de l'article qui rajoute le petit paragraphe sur le module unittest


Commentaires
Posté par providenz le vendredi 16 avril 2010 à 19:33
Pour les unit tests, c'est une bonne nouvelle. merci pour l'info.

Nom: Email: URL: Commentaire: Si vous saisissez quelque chose dans ce champ, votre commentaire sera considéré comme étant indésirable: Captcha: captcha

Luc JEAN
Ingénieur logiciel

09.65.20.15.70
ljean@apidev.fr

Luc JEAN ingénieur logiciel

J'ai une expertise sur le langage Python, langage open-source, qui permet de développer très rapidement des sites internet et des applications simples ou complexes.

Je suis situé à Rozier-en-Donzy (Loire 42) au centre d'un triangle Saint-Etienne, Roanne, Lyon.

Membre de Loire Numérique

Charte Loire Numérique

Suivez les nouveautés

Wikio RSS  RSS Blog Python Django selenium
Paperblog : Les meilleurs actualités issues des blogs Follow luc_apidev on Twitter