Aller au menu - Aller au contenu

La troisième version du langage de programmation Python est sortie

Revenir à la liste des news
Participer à la discussion

Informations

Contributeur(s) : Maxibolt
Publié : le 17/12/2008 à 22:24:12
Catégorie : Programmation
Visualisations : 2 001

La troisième version du langage de programmation Python [...]

Le logo de Python depuis la version 2.5
Python est un langage de programmation créé en 1991 par un certain Guido Van Rossum. Depuis sa création, il a subi de nombreuses améliorations, et c'est il y a peu, le 3 décembre 2008, que la toute dernière mouture est apparue : Python 3.0.

Présentation générale du langage



Python est un langage qui se veut simple et puissant. Sa popularité augmente de plus en plus, comme le montre cet article, qui lui attribue la sixième place des langages les plus populaires.
Il supporte les paradigmes impératifs, orientés objet et fonctionnels, bien que ce dernier n'en est pas encore à un stade avancé. Le langage propose également diverses librairies externes, ce qui le rend pratique pour de nombreux usages, je pense notamment à PyQt pour la création de GUI, PySFML pour les jeux, PIL pour la création d'images, etc. On peut également s'en servir dans la création de sites web dynamiques, notamment à l'aide du framework Django, dont la version 1.0 est sortie récemment.

"What's new in Python 3.0"



Les nouveautés du langage



Python 3.0 marque une certaine rupture avec la série des versions 2.*. Une des conséquences de cette rupture est le cassage de la rétrocompatibilité. Vos anciens programmes écrits sous python 2.5 ou 2.6 ne fonctionneront donc plus sous Python 3 sans modification (lisez la news de wgmpgp à ce sujet).
Image utilisateur

On peut énumérer plusieurs modifications importantes telles que :
  • print et exec deviennent des fonctions. A ce titre, on ne pourra plus écrire :
    Code : Python
    1
    2
    3
    commande = "nombre = 3"
    exec commande
    print nombre
    

    Ce code deviendra :
    Code : Python
    1
    2
    3
    commande = "nombre = 3"
    exec(commande)
    print(nombre)
    

    Ce qui aura pour effet :
    Code : Console
    Python 3.0 (r30:67507, Dec 3 2008, 20:14:27) [MSC v.1500 32 bit (Intel)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    >>> commande = "nombre = 3"
    >>> exec(commande)
    >>> print(nombre)
    3
    >>> _

  • Les types entier et chaîne de caractères ont subi des modifications. Le type entier est renommé de "int" en "long", le type "str" représente maintenant une chaîne codée en utf-8, l'opérateur / définit maintenant la vraie division (pour effectuer une division d'entiers, utilisez //)
  • La fonction raw_input a été supprimée. C'est maintenant input qui remplit son rôle, à savoir récupérer sous forme de chaîne de caractères une entrée de l'utilisateur
  • Des fonctions qui retournaient des listes retournent maintenant des générateurs, ce qui est plus adapté : je parle notamment des méthodes key() , iterkeys() , items() , iteritems() , values() et itervalues() des dictionnaires, des fonctions zip() , map() et filter() , et de range() qui se comporte maintenant comme l'ancienne xrange() qui a été retirée.
  • Les opérateurs de comparaison <, <=, >= et > renvoient une exception TypeError au lieu de la valeur booléenne False quand la comparaison n'a pas de sens, par exemple None < None .
  • True , False et None sont maintenant des mots réservés, ce qui signifie qu'on ne peut plus modifier leur valeur.

Bien entendu, cette liste ne peut pas être exhaustive. Pour plus d'informations, je vous encourage à aller lire ce texte, qui répertorie tous les changements effectués.

Maintenir son code



De nombreux efforts ont été mis en oeuvre de la part des développeurs de Python pour faciliter le changement de version. En effet, avec la mise en place de Python 2.6, version de transition vers Python 3.0, a notamment été fourni l'utilitaire 2to3, qui permet de mettre à jour vos codes sources.

Quant aux librairies externes, il va probablement falloir attendre un certain temps. PyQT 4 n'est actuellement disponible que jusqu'à Python 2.6, Django également. Il semble qu'il en soit de même pour PySFML.
Les deux versions de Python vont probablement cohabiter ensemble pendant au moins un ou deux ans, le temps qu'une majorité de développeurs passent à Python 3.
Si vous êtes vous-mêmes dans ce cas et que vos projets sont adaptables aux deux versions, je ne peux que vous encourager à les distribuer sous les deux formes afin que chacun y trouve son compte.

Apprendre Python



Oui, je m'adresse à toi, jeune padawan qui est tombé sur cette news et qui te dit « Bon tout ça c'est bien, mais en pratique, comment je fais moi pour profiter de toutes ces nouveautés ? »

Image utilisateur
Si vous souhaitez apprendre le Python, je vous conseille de commencer par Python 2.6 afin de pouvoir profiter de toutes les ressources disponibles. En revanche, il existe très peu de tutoriels sur Python 3 et quasi aucune libraire externe. De nombreux cours sont disponibles sur la toile, par exemple celui de Gérard Swinnen, très complet sur tout ce qui touche les bases du langage, ou le très connu Dive into Python (en français ici).

Si vous maîtrisez déjà le langage de programmation Python, voyez si les outils que vous utilisez vous permettent de faire le passage. Si vous vous sentez au niveau nécessaire, vous pouvez proposer aux développeurs de ces outils de les aider à gérer la transition.

Dans tous les cas, il faut bien se rendre à l'évidence : Python 3 a vocation à représenter l'avenir de Python, et il faudra bien sauter le pas un jour ou un autre.

Liens


52 Participations

Pour accéder à cette section
Connectez-vous !
connexion_rpx
Page 1  2  Suivante
Pseudo Discussion
1 visiteur sur cette news (0 membre et 1 Anonyme)
Page 1  2  Suivante
Hors ligne Zopieux # Posté le 17/12/2008 à 22:56:46
Mhg n pryhv dhv zr yvg
Avatar
Groupe : Interdiction d'écriture

Python c'est génial. Utilisez Python !
Le seul truc avec Python 3k, c'est que vu que c'est quand même assez différent des versions différentes, les librairies vont devoir s'adapter. Reste à espérer qu'elles seront rapidement compatibles.

Merci pour la news, elle résume plutôt bien.

On notera aussi ce très bon tutoriel (en anglais) pour voir un peu les bases basiques.
 
Hors ligne Bachir ElMagnifico # Posté le 17/12/2008 à 22:58:28
Avatar
Groupe : Bannis
Flux RSS

chouette la nouvelle version, bienque je resterai encore un moment sur la 2.6 ^^

Image utilisateur
 
Hors ligne dod # Posté le 17/12/2008 à 23:01:37
Avatar

Là je vois que la fonction raw_input a été remplacé par input pour récupérer une entrée utilisateur, pourquoi ?
Hors ligne acieroid # Posté le 17/12/2008 à 23:05:08
#foo waz here
Avatar
Flux RSS

Études : FSA ULB

Citation : dod
Là je vois que la fonction raw_input a été remplacé par input pour récupérer une entrée utilisateur, pourquoi ?

http://www.python.org/dev/peps/pep-3111/

It's awesom.
 
Hors ligne dod # Posté le 17/12/2008 à 23:08:35
Avatar

Merci pour le lien mais lorsque j'ai écrit pourquoi, c'était pour inciter à expliquer dans la news (ne serait que très rapidement) la raison de ce changement. Cela permettrait ainsi d'avoir une news détaillée qui explique un certain nombre de changements, leurs raisons et leurs implications.
Hors ligne acieroid # Posté le 17/12/2008 à 23:14:47
#foo waz here
Avatar
Flux RSS

Études : FSA ULB

Citation : dod
Merci pour le lien mais lorsque j'ai écrit pourquoi, c'était pour inciter à expliquer dans la news (ne serait que très rapidement) la raison de ce changement. Cela permettrait ainsi d'avoir une news détaillée qui explique un certain nombre de changements, leurs raisons et leurs implications.

Peut être que la news n'a pas pour but de donner précisément les changements avec leurs raisons, mais surtout de présenter au lecteur le nouveau Python, afin qu'il puisse se documenter dessus si cela l'intéresse, plutôt que de se limiter à la news ? C'est d'ailleurs une des raisons (j'espère du moins) pour lesquelles il y a des liens en fin de news.

It's awesom.
 
Hors ligne dod # Posté le 17/12/2008 à 23:19:46
Avatar

C'est vrai que la news est bien faites et qu'elle offre pas mal de liens. Mais c'est juste que je suis plutôt adepte des news très complètes.
Hors ligne Kooby # Posté le 17/12/2008 à 23:39:32
♪ I like the dark ♫
Avatar

Citation : Zopieux
pour voir un peu les bases basiques.

:-°

J'ai aimé la news (coté un peu humoristique qui change des pattés auxquels on a droit d'habitude), même si Python ne m'intéresse pas du tout ;) .

Image utilisateur
 
Hors ligne MisterDo # Posté le 17/12/2008 à 23:49:36
\_/O<
Avatar

Super news, les problèmes de syntaxes de Python sont corrigés !
Je vais devoir reprogrammer 2-3 trucs...
 
Hors ligne anonyme # Posté le 18/12/2008 à 00:05:41

Programming in Python 3
A Complete Introduction to the Python Language
ISBN-10: 0137129297 – ISBN-13: 978-0137129294
http://www.qtrac.eu/py3book.html

Python, "le" language de script par excelence !
- syntaxe accessible aux débutants
- bon pour l'administration système
- le développement web(django, plone, zope)
- les interfaces graphiques(py-gtk, pyQt,tk, wxpython)
- les base de données(toutes)
- une bibliothèque de modules riches...

bref il y en a pour tous les niveaux de la prog, dans tous les secteurs !
Hors ligne ShadowBlade # Posté le 18/12/2008 à 00:09:14
Avatar

Question con du jour, quel est l'avantage/l'intérêt de python par rapport à du C/C++ ?

Pour avoir travaillé très peu avec, je sais qu'il s'implémente facilement sur des serveurs Linux, pour des applications orientées Web par exemple, à part ça ?

ubuntu-user Image utilisateur

> Découvrez mes tutos sur le SdZ.
> Komodo Edit, outil de développement open source orienté Web.
 
Hors ligne filc # Posté le 18/12/2008 à 00:11:42

Études : IUT Vannes

Citation : hugin
Python, "le" language de script par excelence !
- syntaxe accessible aux débutants

C'est une blague ?

Compte twitter de Lordi-France. Toute les dernières news sur Lordi !
http://twitter.com/lordifrance
 
Hors ligne louizatakk # Posté le 18/12/2008 à 00:43:54
Avatar

Citation : filc
Citation : hugin
Python, "le" language de script par excelence !
- syntaxe accessible aux débutants

C'est une blague ?

Au contraire, je trouve ça tout à fait juste.
Hors ligne anonyme # Posté le 18/12/2008 à 00:49:40

Citation : louizatakk
Citation : filc
Citation : hugin
Python, "le" language de script par excelence !
- syntaxe accessible aux débutants

C'est une blague ?

Au contraire, je trouve ça tout à fait juste.


tsss...l'a marché dans !
Hors ligne jeremybs # Posté le 18/12/2008 à 00:50:43
Groupe : Bannis

Citation : filc
Citation : hugin
Python, "le" language de script par excelence !
- syntaxe accessible aux débutants

C'est une blague ?


Je suis sure que tu dit sa sans avoir jamais toucher a Python ou très peu , car python est vraiment bien pour un débutant.
 
Hors ligne shine-neko # Posté le 18/12/2008 à 00:58:39
Saite ita no wa My Rosy Heart
Avatar

Oo sympa de changer la structure de la syntaxe vas falloir tout modifier :D

Je recherche un prestataire graphique pour une grosse mission. Si vous êtes infographique/DA en indépendant ou auto-entrepreneur. Contactez moi.
 
Hors ligne Trashjedi # Posté le 18/12/2008 à 01:28:31
Avatar

Ville : Fontaine
Pays : France métropolitaine
Études : UJF Grenoble

Bonne news. J'ai touché python un peu et j'ai trouvé assez simple. Lorsque j'aurai le temps (et que je serai confortable en C/C++) j'y passerai plus de temps :)

Image utilisateur Image utilisateur
 
Hors ligne Trent # Posté le 18/12/2008 à 01:32:07
(Sur|Sous)doué à mi-temps.
Avatar

Citation : shine-neko
Oo sympa de changer la structure de la syntaxe vas falloir tout modifier :D

Citation
[…]notamment été fourni l'utilitaire 2to3, qui permet de mettre à jour vos codes sources.


Sinon pour moi Python est vraiment l’excellence, une syntaxe facile, logique et très courte permet de réaliser de grandes choses.

Image utilisateur
 
Hors ligne Artefact2 # Posté le 18/12/2008 à 07:19:12
Avatar

Ville : Reims
Pays : France métropolitaine
Études : Université de Reims

Le développement est actif, c'est cool.

Cependant, y'a un truc qui me semble bizarre & injustifié (bien que je ne fasse pas de python. Je fais du Java plutôt).

"print et exec deviennent des fonctions." Intérêt à part de tout faire changer ? Ce genre de trucs syntaxiques à 2 balles peut s'ajouter avec une ligne de préprocesseur (enfin si ça existe en python), alors je vois pas pourquoi ils ne laisseraient pas les 2 (comme en PHP, mais ça n'est pas un exemple je vous l'accorde !).

Sinon, je pense que je ne m'y mettrai que si on m'y force si je vais à l'école, parce que je suis vraiment pas chaud pour (indentation forcée, syntaxe pas claire à mon goût, ...).
Hors ligne sam101 # Posté le 18/12/2008 à 07:27:07
Avatar

Études : IUT Orsay

Même si j'ai jamais touché a Python (Bien qu'en fait, les 2/3 des apps que j'utilise sont en python..), ça m'a l'air bien sympa.. Faudra que je m'y mette un jour =). Bonne news :).

"Most people ask, 'What does a thing do?' Hackers ask, 'What can I make it do?'" - Pablos H
http://www.github.com/sam101
http://www.samuellepetit.fr
 
Hors ligne noluz # Posté le 18/12/2008 à 07:47:31

Citation : hugin
Python, "le" language de script par excelence !
- syntaxe accessible aux débutants
- bon pour l'administration système
- le développement web(django, plone, zope)
- les interfaces graphiques(py-gtk, pyQt,tk, wxpython)
- les base de données(toutes)
- une bibliothèque de modules riches...

Loin de moi l'idée de vouloir lancer un troll, mais Perl fait tout ça au moins aussi bien que Python. Alors parler de "langage de script par excellence", c'est quand même un peu prétentieux.
(Il n'est pas question de lancer un troll hein, juste de remettre à sa place un fanboy).

Personnellement, je trouve que ça fait pas beaucoup de changements pour une version majeure d'un logiciel aussi gros... Je veux bien que la syntaxe change légèrement, mais ça n'a rien de vraiment dramatique. Le passage à l'Unicode est un gros morceau, j'avoue, mais de là à faire une nouvelle version majeure...
Hors ligne anonyme # Posté le 18/12/2008 à 08:01:46

Citation : Artefact2
"print et exec deviennent des fonctions." Intérêt à part de tout faire changer ? Ce genre de trucs syntaxiques à 2 balles peut s'ajouter avec une ligne de préprocesseur (enfin si ça existe en python), alors je vois pas pourquoi ils ne laisseraient pas les 2 (comme en PHP, mais ça n'est pas un exemple je vous l'accorde !).


Ce qu'il faut bien comprendre avec Python 3 c'est que dès le début il était prévus de casser la compatibilité. Python 3 est en projet depuis pas mal de temps (ils ont commencé avant la 2.3 il me semble) et beaucoup de choix ont sut être fait pour pérenniser le langage. Dans les mouture 2.x, Python trainait un fonctionnement lié a son histoire qui n'etait pas forcément des plus logiques (la division, pourquoi print et exec n'était pas des fonctions mais des mots clé, ...). Tous ces trucs hérité du passé restait présent pour assurer la compatibilité mais n'etait ni très logique, ni très propre. Lorsque le projet Python 3k a été lancé, il se sont dit : "ok, on change de numéro de version alors autant repartir sur des bases solides". Le travaille sur python 3 a alors été lancé. La séris 2.x a continué a évolué en parrallele car elle est utilisé pour de nombreux outils, même pro. Beaucoup des modifications de python 3 ont été incluse dans la série 2.x lorsque cela ne cassait pas directement la compatibilité. Maintenant que la version 3 est sortit, les 2.x vont continué d'être supporté et même si je ne pense pas qu'une 2.7 arrive, les deux vont cohabiter pendant longtemps.

La solution que tu propose n'est pas très propre? Ok Python 3 casse la compatibilité mais il etait nécéssaire de le faire pour l'avenir de pyhthon. Maintenant ils ont des bases solides pour avancer. Je sais que cela va prendre du temps avant que toutes les biblio dispo pour les 2.x arrivent sur la 3 mais certains changement méritait que cela soit fais (en particulier le passage en unicode) et de toute façons tu peux toujours rester sur la 2.6. Le changement aurait put être encore plus brutal si ils n'avaient pas ajoutés les fonctionnalités au fur et a mesure dans les 2.X.

Vous direz ce que vous voulez mais moi je trouve bien qu'un gros projet comme Python se risque de casser la compatibilité pour mieux apréhender l'avenir. De toute façon certains changement aurait été indispensable a court terme (unicode par ex) et aurait cassé beaucoup de modules alors autant tout faire d'un coup.

Si plus de projets informatique ce risquait à cassé la compatibilité pour repartir sur des bases saines, on s'en porterait pas moins bien. Ok il faut faire des changements mais bon c'est pour notre bien.
Hors ligne anonyme # Posté le 18/12/2008 à 08:08:41

Citation : zulon
<citation nom="hugin">Personnellement, je trouve que ça fait pas beaucoup de changements pour une version majeure d'un logiciel aussi gros... Je veux bien que la syntaxe change légèrement, mais ça n'a rien de vraiment dramatique.


Comme je l'ai dit, tous les changements de python 3 (qui est prévus depuis longtemps) qui pouvait être appliqué sans (trop) casser la compatibilité, ont déja était fait dans python 2.4, 2.5 et surtout 2.6.

Dans tous les cas les changements les plus importants ne sont pas forcément les plus visible. Le coup du passage de print et exec c'est anecdotique, dans la majorité des cas cela ce résume a ajouter 2 parentheses.
Les plus gros changement sont a l'intérieure. L'interpréteur (si on peut encore l'appelé comme cela) a été re-écrit en grande partie pour assurer de meilleurs perfs et une évolutions plus éfficace. ce n'est que dans 1 ou 2 ans lorsque l'on aura des version 3.3 ou 3.4 que l'on se rendra compte vraiment de ce qu'a apporté ce changement en terme de vitesse d'execution et de fonctionnement.
A noté aussi que cette version ce concentrait sur le changement du fond, beaucoup de nouveautés ont été reportés aux futurs version, cette version donnant déja pas mal de travail de migration
Hors ligne Karl Yeurl # Posté le 18/12/2008 à 08:45:21
Orange et gris.
Avatar
Flux RSS

Ville : Flémalle
Pays : Belgique
Études : FSA ULG

Chouette excellente news ! :)

J'crois qu'une modification profonde de la syntaxe ne peut pas vraiment faire de tort... ^^
Il suffit de voir pour le SdZ, le code a du être totalement refait, histoire de mieux s'adapter aux nouveaux besoins du site. Ben ce serait-y-pas pareil avec le Phyton ?
Avec un peu de recul, les développeurs du langage ont pu se montrer un peu plus objectifs quant à l'utilisation pratique.

C'est par la suite que, je crois, on se dira "Heureusement qu'il y a eu Python 3 !"

Ce n'est que mon avis. Ah et sinon, je n'y connais rien en scripting langage, donc je ne peux pas participer au troll débat sur le meilleur d'entre eux, mais en toute objectivité, chacun n'a-t-il pas ses atouts et ses défauts ? :p


« Défendre le c cédille majuscule n’est-il pas vain ? Ca m’isole, comme disent les fous. »
Stéphane ARLEN
 
Hors ligne Zanpa # Posté le 18/12/2008 à 09:09:53
Avatar
Groupe : Bannis

Han. Je m'étais mis Dive Into Pyhton en favoris, avec l'intention de m'y mettre... Apprendre quelque chose de dépassé, ça me plaît pas tant que ça au final.
Enfin, si les changements se résument à ce qui est cité dans la news (au niveau de l'écriture du code), c'est peut-être pas si grave.
Hors ligne temet # Posté le 18/12/2008 à 09:31:38
Avatar

Ville : Grenoble
Pays : France métropolitaine
Études : SUPINFO Rhône-Alpes à Grenoble

"mais Perl fait tout ça au moins aussi bien que Python"
"- syntaxe accessible aux débutants"
j'ai vu des codeurs Perl être incapable de dire à quoi servait certains de leurs scripts après quelques semaines.
 
Hors ligne Narchie # Posté le 18/12/2008 à 09:56:06
Groupe : Bannis

Citation : ShadowBlade
Question con du jour, quel est l'avantage/l'intérêt de python par rapport à du C/C++ ?


Des programmes plus courts et plus lisibles, codés plus facilement. La contrepartie étant certes une baisse de performances, qui ne sont cependant pas toujours cruciales. Et comme on peut plutôt facilement écrire des modules en C, ça n'est même pas un vrai problème.

Python est un langage sobre, lisible, derrière lequel s'est construit une vraie communauté, avec de vraies entreprises dedans. La question n'est pas "pourquoi on utiliserait Python", mais à mon avis plutôt "pourquoi on continue d'utiliser Java ou Perl ou...".

Quant à Zulon faut pas lui en vouloir. Il a juste les boules parce que Perl 6 ne sortira jamais :D .

“Perl is obfuscated by design, Haskell is designed by obfuscation.”
 
Hors ligne Coyote # Posté le 18/12/2008 à 10:13:32
Avatar
Validateurs

Ville : Beijing
Pays : Chine
Études : INSA Lyon

Citation : Narchie
La question n'est pas "pourquoi on utiliserait Python", mais à mon avis plutôt "pourquoi on continue d'utiliser Java ou..."

Au moins ça, tiens...
Python a de nombreux avantages, certes. Mais pas besoin d'aller si loin dans vos comparaisons avec d'autres langages.

1) Comment rédiger un tuto
2) Comment faire valider un tuto

“ Au même titre que le bar est fermé, sauf si c'est un poisson, tout travail mérite salaire !”
 
Hors ligne Seba991 # Posté le 18/12/2008 à 10:27:27
Avatar

Ville : Braine-le-comte
Pays : Belgique

Quelqu'un peut me dire si cela aura des implications sur Blender à votre avis ? ( et surtout sur les scripts python dans Blender ^^)...

Parce que déjà qu'il fallait que je prenne la version 2.5.2 de Python pour garder une compatibilité avec la v 2.48 de Blender (la v 2.6 de Python engendrait des erreurs dans Blende à cause de certains mots qui ont été intégré dans le langage réservé de Python je crois)...

Merci d'avance :)
Hors ligne batfunk # Posté le 18/12/2008 à 10:52:18
Et là... c'est le drame...
Avatar

Maintenant des millions de personnes vont se mettre à jour :p
 
Pour accéder à cette section
Connectez-vous !
connexion_rpx

Revenir à la liste des news