Guido Van Rossum a lancé le projet Python 3, également appelé Python 3.0 ou Python 3000, en mars 2006, en créant une nouvelle branche Subversion. Ce projet vise à améliorer la conception du langage en se permettant des modifications incompatibles avec Python 2.x. Depuis la création de Python en 1991, ça sera la seconde version majeure brisant la compatibilité (la précédente est Python 2.0 qui date de 2000).Python 2.6 et Python 3 ont été développés en même temps pour limiter les différences entre ces deux versions. Python 3.0 bénéficie donc de l'ensemble des améliorations de Python 2.6.
1. Introduction douloureuse à Unicode
Le plus gros changement de Python 3 est la séparation stricte entre les chaînes d'octets et les chaînes de caractères. Les deux types str (octets) et unicode (caractères) de Python 2.x sont très proches et convertis implicitement dans les deux sens. Bien que ceci fonctionne dans la majorité des cas, parfois la conversion échoue et le château de cartes s'effondre :
>>> def ajouteSalut(prenom):
... texte = "Salut %s\n" % prenom
... f = open('test.txt', 'a')
... f.write(texte)
... f.close()
...
>>> ajouteSalut("Victor")
>>> ajouteSalut("Stéphane")
>>> ajouteSalut(u"Amélie")
Traceback (most recent call last):
...
f.write(texte)
UnicodeEncodeError: 'ascii' codec can't encode characters
in position 8-9: ordinal not in range(128)
La fonction ajouteSalut() est-elle sexiste ? Elle refuse...
- Accédez à tous les contenus de Connect en illimité
- Découvrez des listes de lecture et des contenus Premium
- Consultez les nouveaux articles en avant-première