La version 2.5 de Python et maintenant largement déployé dans les distributions. Et cette version sera présente par défaut dans la plupart des distributions à venir cet automne.
Mais connaissez vous bien Python 2.5?
A.M. Kuchling a écrit un document qui reprend l'ensemble des PEP implémentés dans Python 2.5: What's new in Python. Les parties les plus importantes de ce document ont été traduites.
Les documents traduit sont disponible à l'adresse http://www.magellan.fpms.ac.be/python/quoi-de-neuf-dans-pyth(...)
Tout les changement ne sont pas important pour tout le monde, je résumerais ici les changements qui changent la vie :).
Expression ternaire: Python introduit une expression conditionnelle ternaire comme en C ou C++: http://www.magellan.fpms.ac.be/python/quoi-de-neuf-dans-pyth(...)
Cette expression est très pratique pour affecter dans les cas courant et cas d'exceptions. Il faut s'habituer à la syntaxe, elle est particulière.
Except et finally plus exclusif: Les structures Except-else et finally ne sont désormais plus exclusives: http://www.magellan.fpms.ac.be/python/quoi-de-neuf-dans-pyth(...)
La sémantique est la même que dans Java, c'est à dire que le bloc finally sera toujours exécuté, très pratique pour libérer des ressources.
Exception new-style: Les exceptions peuvent être de type new-style, et toute la hiérarchie existante devient new-style dans Python 2.5: http://www.magellan.fpms.ac.be/python/quoi-de-neuf-dans-pyth(...)
Beaucoup plus important: la hiérarchie d'exception a changé. Voyez l'article pour les détails mais en gros on peut maintenter intercepter Exception pour intercepter proprement toutes les exceptions.
Générateur modifiable à la volée: L'instruction yield devient une expression plutôt qu'une instruction, et elle peut retourner une valeur: http://www.magellan.fpms.ac.be/python/quoi-de-neuf-dans-pyth(...)
Ceci ajoute un nouveau mode de programmation des générateurs. De nouveaux design patterns verront vraisemblablement le jour pour les générateurs.
L'application partielle de fonction: Il est désormais possible de créer des variantes de fonctions en fixant des paramètres: http://www.magellan.fpms.ac.be/python/quoi-de-neuf-dans-pyth(...)
Ceci a été créé pour le paradigme fonctionnel de Python, néanmoins, cette fonctionnalité ajouté vraiment de la souplesse aux API. Voyez l'exemple de PyGTK dans l'article.
La suite concerne les changements à venir. Ceux-ci ne sont pas activé par défaut, mais ils sont déjà utilisable via un import de __future__.
L'instruction with: Python introduit une nouvelle instruction pour exécuter de façon sûre un bloc de code: http://www.magellan.fpms.ac.be/python/quoi-de-neuf-dans-pyth(...)
Cette nouvelle construction clarifiera énormément le code. Par exemple pour le multithread, l'instruction with permet de synchroniser facilement et clairement une portion de code. L'article fournit un exemple pour les transactions de base de données, rien que cet exemple montre les perspective intéressante de l'instruction with.
L'instruction sera activé dès Python 2.6.
Schéma d'importation clarifié: La façon dont les modules sont importés a été revue afin de régler certains problèmes et de clarifier ce mécanisme: http://www.magellan.fpms.ac.be/python/quoi-de-neuf-dans-pyth(...)
Ce changement est vraiment important car il cassera la compatibilité de tout le code qui repose sur l'importation relative de module. Afin de prévenir les problèmes, il est conseillé d'utiliser systématiquement l'importation absolue dès à présent.
L'importation relative/absolue sera activé dans Python 2.7
Si vous préférez voir l'original, passez sur http://docs.python.org/whatsnew/
Avant la traduction, j'ai contacté l'auteur pour avoir des précisions sur la licence utilisée. L'ensemble du document original est distribué sous licence Python, la traduction est bien sûr distribué avec la même licence.
# Remerciements
Posté par Remuz . Évalué à 8.
Merci pour tes journaux. Celui-ci et celui sur la programmation système sont de qualité et intéressants, et j'y apprend plein de choses.
Rien de plus à dire, mais ça valait le coup d'être soulevé, je crois. :)
[^] # Re: Remerciements
Posté par Bozo_le_clown . Évalué à 5.
Juste quelques petites coquilles pour que l'oeuvre devienne parfaite
http://www.magellan.fpms.ac.be/python/quoi-de-neuf-dans-pyth(...)
s/développeurs ont demandés/développeurs ont demandé/
s/discutions interminable/discussions interminables/
s/des votant/des votants/
s/syntaxe n'étaient/syntaxe n'était/
s/ont proposés/ont proposé/
s/les expressions booléenne habituelle/les expressions booléennes habituelles
s/des saut/des sauts/
s/conditionnelle est utilisé/conditionnelle est utilisée
s/évidant/évident/
s/chaine/chaîne/
S/j'utiliserais des expression conditionnelle /j'utiliserai des expressions conditionnelles/
s/des parenthèse/des parenthèses/
s/pourrait grouper /pourraient grouper /
s/réalisé/réalisée/
s/effectué/effectuée/
s/parenthèes/parenthèses/
s/pourrais/pourraient/
s/parenthèes/parenthèses/
http://www.magellan.fpms.ac.be/python/quoi-de-neuf-dans-pyth(...)
s/sémentique/sémantique/
s/combinaision/combinaison/
s/Peut importe/Peu importe/
s/est levé/est levée/
s/sera comme même/sera quand même/
s///
http://www.magellan.fpms.ac.be/python/quoi-de-neuf-dans-pyth(...)
s/assignassion/assignation
....
[^] # Re: Remerciements
Posté par Benjamin Poulain (site web personnel) . Évalué à 4.
J'ai de sérieuses lacunes en orthographes et je suis content de profiter de ta relecture.
Et merci à Remuz pour ses remerciement ;)
[^] # Re: Remerciements
Posté par Bozo_le_clown . Évalué à 4.
j'ai encore 5 mns
http://www.magellan.fpms.ac.be/python/quoi-de-neuf-dans-pyth(...)
s/qui serait des expressions/qui seraient des expressions/
s/peut paraitre étrange/peut paraître étrange/
s/désiraient l'ajout d'expression conditionnelle /désiraient l'ajout d'expressions conditionnelles
s/devrait obliger d'entourer/devrait obliger à entourer/
s/version apparait meilleure/version apparaît meilleure,
s/Un autre raison/Une autre raison
s/Il y eu des discussions/Il y a eu des discussions/
[^] # Re: Remerciements
Posté par Bozo_le_clown . Évalué à 2.
s/deux façon/ deux façons/
s/version combiné était compliqué/ version combinée était compliquée/
s/exception est levés/exception est levée/
[^] # Re: Remerciements
Posté par Benjamin Poulain (site web personnel) . Évalué à 3.
[^] # Re: Remerciements
Posté par Bozo_le_clown . Évalué à 2.
s/être des classe/être des classes/
s/classes classique/classes classiques
s/relations d'héritages /relations d'héritage/
s/réarangement/réarrangement/
s/les développeurs voulait /les développeurs voulaient/
s/les exceptions qui indiquaient/les exceptions qui indiquaient/
s/oblige d'intercepter/ oblige à intercepter/
s/ Le schémas/Le schéma/
s/les version précédentes/les versions précédentes/
s/une classe dérivé de/une classe dérivée de/
s/les futures version de/les futures versions de/
s/imposer cette contraite/imposer cette contrainte/
s/ si cela serait fait ou pas /si cela sera fait ou non/
http://www.magellan.fpms.ac.be/python/quoi-de-neuf-dans-pyth(...)
Avant Python 2.5, les générateurs ne pouvaient générer des données qu'à partir d'un code fixe. Maintenant, les générateurs possèdent des méthodes supplémentaires pour permettre de changer de comportement de ceux-ci.
...
il n'y a plus de possibilités ...
le code du générateur soit unevariable globale
....
où elle sont obligatoires.
...
(Le PEP 342 explique les règles exactes, qui sont qu'une expression ....
Les valeurs sont envoyéesdans un générateur en utilisant sa méthode send(valeur). ...next() qui est appellée, le yield revoie None....
...il y a deux nouvelles méthodes disponibles avec les générateurs :
....L'exception est levée par l'expression yield ....
L'effet cumulé de ces changements est de faire évoluer les ....
peuvent être entrées, suspendues, et reprises
...
L'addition de la méthode close() a uneffet secondaire qui n'est pas évident à première vue.
... finally a maintenant toujours une chance d'être lancée.
[^] # Re: Remerciements
Posté par Bozo_le_clown . Évalué à 2.
dont certains arguments ont déjà
...
les outils nécessaires
...
Pour des programmes écrits dans un style fonctionnel, vous voudrez parfois construire des variantes de fonctions existantes qui ont certains paramètres déjà remplis.
...
et les arguments fixés : (fonction, arg1, arg2, ..., kwarg1=valeur1, kwarg2=valeur2). L'objet résultant est callable. Vous utilisez
...
Le callback (fonction de rappel) fournie pour le menu est une version partielle de la méthode open_item() où le premier argument à été fournit
...
la fonction décorateur possédera le docstring de la fonction décorée mais aussi des attributs supplémentaires ....
de vos propres décorateurs pour copier ...
[^] # Re: Remerciements
Posté par Bozo_le_clown . Évalué à 2.
...certaines tâches qui nécessitaient de gérer les exceptions ...
qui utilisait précédemment des blocs "...écrire des objets utilisables avec cette instruction.... Cette objet peut renvoyer une valeur qui peut facultativement être stockée dans une variable. ...
Certains objets standards de Python ...
"for" a levé une exception au millieu du bloc.
...
Le verrou est acquis avant que le block ne soit exécuté, ...
...voudront comprendre les détails de....
... Je ne présenterais pas le code détaillé mais j'insisterais sur les méthodes .... la terminologie des bases de données : un ensemble de changements d'une base de données estsont groupée en transaction. Les transactions peuvent être soit réalisées, tous les changements sont écrits dans la base de données, soit complètement annulées, aucun changements de la transaction ne sera appliqué et la base de données reste inchangée. Voyez la documentation de n'importe quelle base de données pour plus d'informations.)
Imaginez que nous ayons un objet qui représente une connexion à une base de données. ...
...
elle n'a qu'à commencer une nouvelle transaction. ...qu'aucune exception n'a été levée, si c'est le cas la ...
et un décorateur utiles pour écrire des objets utilisables avec l'instruction "with".
... Le générateur ne peut suspendre avec yield qu'une seule ...retour qui pourra être liée à une variable...dans le bloc sera levé par yield(voir PEP 342:
...
Notre exemple de base de données de la section
[^] # Re: Remerciements
Posté par Benjamin Poulain (site web personnel) . Évalué à 1.
À tout hasard, tu n'aurais pas envi de rejoindre Linux Certif [ http://www.LinuxCertif.com ] pour améliorer la qualité des documents?
[^] # Re: Remerciements
Posté par Bozo_le_clown . Évalué à 2.
[^] # Re: Remerciements
Posté par Bozo_le_clown . Évalué à 2.
PS: Il y a pas un site python francophone officiel qui traduit la doc python parce qu'entre tous les sites qui existent on a un peu du mal à s'y retrouver
http://www.magellan.fpms.ac.be/python/quoi-de-neuf-dans-pyth(...)
...
Disons que vous avez un répertoire comme celui-ci :
...
Que se passe-t-il si il exécute l'opération import string ? Avant Python 2.5, l'interpréteur chercherait d'abord ..., il trouverait pkg/string.py, et importerait le contenu de ce fichier comme module pkg.string, rendant de ce fait ce ...pkg.string que vous désiriez charger, ...une méthode plus propre pour importer des ...
Lire du code qui compte sur les importations relatives est aussi moins clair, .... Les utilisateurs Python ont rapidement...dans de nouveaux modules ajoutés dans les versions suivantes de Python.
....
ils sont uniquement utilisables avec la forme "from ... import ...".
[^] # Re: Remerciements
Posté par Benjamin Poulain (site web personnel) . Évalué à 2.
Sinon pour les débutants, il y a aussi l'excellent Dive Into Python qui est traduit en français: http://diveintopython.adrahon.org/
[^] # Re: Remerciements
Posté par Bozo_le_clown . Évalué à 2.
http://www.magellan.fpms.ac.be/python/quoi-de-neuf-dans-pyth(...)
et que le choix se fait entre deux valeurs.
http://www.magellan.fpms.ac.be/python/quoi-de-neuf-dans-pyth(...)
la version combinée était compliquée
qu'une nouvelle exception est levée,
http://www.magellan.fpms.ac.be/python/quoi-de-neuf-dans-pyth(...)
les futures versions de Python 2.x commenceront
à imposer cette contrainte.
http://www.magellan.fpms.ac.be/python/quoi-de-neuf-dans-pyth(...)
futures versions de Python 2.x commenceront à imposer cette contrainte.
....
Les parenthèses ne sont pas nécessaires au sens strict,
http://www.magellan.fpms.ac.be/python/quoi-de-neuf-dans-pyth(...)
si bien que les listing d'appels de la fonction décorée sont plus faciles à comprendre
http://www.magellan.fpms.ac.be/python/quoi-de-neuf-dans-pyth(...)
Dans les sections suivantes, nous examinerons les détails
Les auteurs de nouveaux objets voudront comprendre les détails de l'implémentation sous-jacente,
le BLOC lève une exception, "__exit__(type, value, traceback)" est appelée
Je ne présenterais pas le code détaillé mais j'insisterai
un ensemble de changements d'une base de données est groupée en transaction.
tous les changements sont écrits dans la base de données,
une connexion à une base de données et
http://www.magellan.fpms.ac.be/python/quoi-de-neuf-dans-pyth(...)
module pkg.string, rendant de ce fait ce module lié au nom "string"
C'est génial si c'est pkg.string que vous désiriez charger,
Lire du code qui compte sur les importations relative est aussi moins clair,
utilisateurs Python ont rapidement appris à ne pas utiliser les noms de modules
dans de nouveaux modules ajoutés dans
ils sont uniquement utilisables avec la forme
[^] # Re: Remerciements
Posté par BAud (site web personnel) . Évalué à 4.
[^] # Re: Remerciements
Posté par Benjamin Poulain (site web personnel) . Évalué à 1.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.