Magazine High tech

Quoi de neuf avec Python 2.7

Publié le 15 avril 2010 par Luc

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)])
>>> ditems()
[('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'

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.


Retour à La Une de Logo Paperblog

A propos de l’auteur


Luc 11 partages Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte