Developpez.com - Rubrique Python

Le Club des Développeurs et IT Pro

Que pensez-vous de Python 3.0 ?

Le 2005-04-21 10:51:43, par Guigui_, Expert éminent sénior
La version finale de Python 3.0 devrait bientôt sortir (actuellement la rc3).

Cette version va rompre la compatibilité avec Python 2.x (même si la migration de vos programmes ne devraient pas être trop difficile, l'outil 2to3 devrait de ce côté pas mal aider).

On peut noter:
- print devient une fonction. Il vous faudra donc utiliser les ()
- Unification des types str et unicode. Les questions récurrentes sur les problèmes d'encodage devraient moins se faire sentir. En contre-partie, un type byte est créé.
- des fonctions qui retournaient auparavant des listes retourneront maintenant des iterateurs ou des vues (range, map, filter, ...). Il vous faudra caster explicitement si vous voulez tout de même récupérer des listes.
- La division / retournera un float même sur des entiers
- Pas mal de fonctions/modules devenues obsolètes sont supprimés de la distribution standard.
A noter que pour le moment Python 3.0 que ces prédécesseurs
Vous pourrez retrouver tous les changements ici: http://docs.python.org/dev/3.0/whatsnew/3.0.html

Qu'est-ce qui vous plait dans les changements apportés par cette version ?
Allez-vous vous mettre rapidement à Python 3.0 ? Il faudra tout de même patienter un peu avant de voir la migration des différentes bibliothèques tierces utiles.

What's new : http://docs.python.org/dev/3.0/whatsnew/3.0.html
Téléchargement : http://www.python.org/download/releases/3.0/
Documentation : http://docs.python.org/dev/3.0/
  Discussion forum
55 commentaires
  • Bayard
    Membre éclairé
    A noter que pour le moment Python 3.0 que ces prédécesseurs
    -> Pourriez-vous rajouter les mots manquants ?
  • anthyme
    Membre éprouvé
    Moi j'avais entendu parler de typage statique optionnel mais je n'ai pas vraiment regardé les details mais ça peut etre pas mal (surtout si le polymorphisme suit) à la fois pour le travail colaboratif (pas toujours facil de savoir ce qui se balade quand c'est pas son propre code) et les IDE (vérification des arguments à l'écriture).

    Sinon l'apparition du type byte, l'unicode en string de base, ...

    Enfin bon on vera ...
  • GnuVince
    Membre éclairé
    Première des choses, il n'y a pas de typage statique. Il y a des annotations, mais le compilateur ne s'en sert pas, c'est pour les programmeurs et pour la documentation.

    Pour ce qui est de Python 3.0, je le trouve très bien. C'est pas vraiment différent de Python 2.x (contrairement à Perl 5 vs Perl 6), mais certains changements font du bien:
    • L'intégration du Unicode. Les problèmes d'encodings sont tellement chiant, j'ai super hâte que tout le monde se mette à utiliser Unicode et je suis bien content que Python l'utilise par défaut
    • La plupart des fonctions qui retournaient des listes retournent maintenant des itérateurs (range, keys, values, items, etc.)
    • Même si c'est certain que je vais avoir énormément d'erreurs de syntaxe à cause de ça, faire que print soit une fonction est un point positif.
    • Plus de classic classes
    • Enfin de vraies divisions. 3 / 2 retourne 1.5 et 3 // 2 retourne 1 (ancien comportement)


    J'ai lu un article d'un programmeur qui a converti feedparser avec l'outil 2to3. Apparament ça fonctionne bien.
  • anthyme
    Membre éprouvé
    hummmm...

    t a un site avec un exemple de code de typage euhhh "définie" en python 3 ?
  • GnuVince
    Membre éclairé
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    >>> def plus(a: int, b: int) -> int:
    ...   return a + b
    ... 
    >>> plus(10, 20)
    30
    >>> plus.__annotations__
    {'a': <type 'int'>, 'b': <type 'int'>, 'return': <type 'int'>}
    >>>
  • anthyme
    Membre éprouvé
    hummm je suis pas super fan de la syntaxe (horreur des "->" dans les langages on avait été epargné jusqu'ici )

    oki merci pour l'info
  • GnuVince
    Membre éclairé
    Envoyé par anthyme
    hummm je suis pas super fan de la syntaxe (horreur des "->" dans les langages on avait été epargné jusqu'ici )

    oki merci pour l'info
    Effectivement, j'aime pas non plus la syntaxe pour le return, mais enfin. Une chose le fun par contre, les IDEs vont pouvoir donner plus d'informations, mais sans qu'on perde le typage dynamique.

    Je dois mentionner aussi que les annotations ne doivent pas obligatoirement être des types:

    Code :
    1
    2
    3
    4
    5
    6
    7
    >>> def foo(x: 'entier positif') -> 'brosse a dents':
    ...   pass
    ...
    >>> foo.__annotations__
    {'x': 'entier positif', 'return': 'brosse a dents'}
    >>>
    Ce sont vraiment juste des annotations, des infos supplémentaires qu'on peut donner aux paramètres.
  • Guigui_
    Expert éminent sénior
    La Release 3.0 est maintenant disponible : http://www.python.org/download/releases/3.0/
  • kedare
    Membre chevronné
    Arf toujours pas de join sur les tuples/arrays, pourquoi ils font pas comme dans tout les langages au lieu de mettre ca sur str ? :/
  • legerf
    Membre à l'essai
    Nouveau en python je vais directement me lancer sur Python 3000. En comparaison avec la v2 l'unicode, le multiprocessing et l'amélioration des classes I/O et les types strings/datas font la différence : programmation système, applis en réseaux, supervision ...