PyQt a donc suivi la récente évolution de Qt et permet dans cette version 4 aux développeurs Python d'utiliser les différents composants fournis par Qt4. PyQt4 peut être installé conjointement à PyQt3 sans aucun problème, ce qui facilitera les migrations de Qt3 vers vers Qt4.
Riverbank est active en ce qui concerne le développement autour de Python et Qt puisqu'elle fournit également PyKDE, un ensemble de bindings pour le développement autour de KESIP - un outil permettant de créer facilement des bindings Python pour une bibliothèque C/C++. Pour les scientifiques, est également disponible la version 4.2.1 de PyQwt et PyQwt3D qui permettent de créer des objets graphiques tels que des courbes en 2D et 3D en utilisant les objets Qwt et Qwt3D de Qt.
Par ailleurs, Alexis Robert nous a signalé dans un journal la sortie de Python 2.5 beta 1 :
Le 20 juin 2006, Python 2.5 beta 1 est sorti. C'est l'occasion d'observer les nouveautés de cette version majeure du célèbre langage de Guido Van Rossum. D'après le planning, la beta 2 sortira le 12 juillet, la rc1 sortira le 1er août et la version finale le 8 août 2006, suivant la PEP 356. Les changements de Python 2.5 beta 1 comprennent un mélange intéressant d'amélioration côté langage et bibliothèque. À part les améliorations des bibliothèques qui seront très utiles et assez visibles, les changements au niveau du langage sont assez sympa même si ce n'est pas des fonctionnalités qui seront utilisées tous les jours.
Il faut aussi rappeler que ce sera la première version de Python qui bénéficiera de son nouveau logo, depuis que son site internet a été refait.
Côté langage
- Ajout des expressions conditionnelles :
>>> import os
>>> a = "ERROR" if os.system("ls") != 0 else "OK"
>>> print a
OK
- Ajout de la possibilité de faire des fonctions partielles (functools comprend des outils pour faire de la programmation fonctionnelle)
>>> import functools
>>> def log(message, subsystem):
... print "%s: %s" % (subsystem, message)
...
>>> log("plop", "linuxfr")
linuxfr: plop
>>> linuxfr_log = functools.partial(log, subsystem="linuxfr")
>>> linuxfr_log("coin")
linuxfr: coin
- Exécuter des modules comme des scripts
- Unification de "except" et "finally" : http://docs.python.org/dev/whatsnew/pep-341.html et http://www.python.org/dev/peps/pep-0341/
- Imports relatifs/absolus: ça permettra à l'avenir d'importer un module comme ça : from ..test import machin
Pour l'activer dans Python 2.5 : from __future__ import absolute_import
- yield est maintenant une expression qui retourne une valeur
- Ajout du mot clef "with" qui est TRÈS pratique : au lieu de
>>> f = open("/etc/fstab", "r")
>>> f.readline()
'# /etc/fstab - see man 8 mount\n'
où on a une variable f qui se balade un peu partout, on utilise
>>> with open("/etc/fstab", "r") as f:
... print f.readline()
Je précise qu'il faut, pour le faire tourner sous Python 2.5 : from __future__ import with_statement - ASCII devient le codage par défaut (ça génère des SyntaxError à la place des Warning)
- class C():
pass
est maintenant autorisé (on devait faire class C: obligatoirement)
- Apparition de l'objet "BaseException" ce qui permet de faciliter le except (et une accélération de 30%).
- Ajout de la méthode __index__
- Ajout du type "defaultdict" qui est comme un dict sauf qu'il retourne une valeur quand un objet n'est pas présent.
- Autres améliorations diverses .
Côté modules
- Changement des metadata pour setup.py: champs Classifier, Download-URL, Requires, Provides, Obsoletes ajoutés et changement de sémantique pour les champs License et Platform qui doivent être utilisés en fonction de Classifier.
- Le module audioop supporte le codec a-LAW et le codec u-LAW a été amélioré.
- Le module codec possède le support des codecs incrémentaux, de plus la fonction codec.lookup() retourne une instance de l'objet CodecInfo au lieu d'un tuple.
- Ajout du module cProfile, qui est comme profile, mais en C.
- Bugfixes et améliorations du module CSV.
- datetime possède ENFIN un strptime, comme son voisin time, ça évite les hacks.
- Le paquet email a été mis à jour en version 4.0.
- Le paquet fileinput est bien plus flexible (noms de fichier unicode, et d'autres).
- Dans le module gc (garbage collector) ajout de la fonction new_count() renvoyant un tuple du ramassage pour les 3 générations (oula je traduis mal)
- Le module mailbox permet l'écriture et non plus la lecture seulement.
- Ajout du module msilib permettant la création d'installateurs au format MSI (gloups) et de fichiers CAB. Un support basique de la lecture des installateurs MSI est assuré.
- Le module nis permet aussi de naviguer sur d'autres domaines que le sien.
- Mise à jour de optparse, ajout de epilog (qui ajoute un message après le --help) et un destroy().
- Ajout du benchmark pybench.
- pyexpat utilise maintenant la version 2.0 du parseur Expat.
- Les modules regex, regsub, statcache, tzparse et whrandom ont été supprimés. De même est supprimé le répertoire lib-old (n'affecte personne si le programme ne touche pas à sys.path pour forcer son inclusion).
- Le module rlcompleter ne nécessite pas l'inclusion de readline et donc tourne sur des plateformes non-Unix
- SimpleXMLRPCServer et DocXMLRPCServer ont un attribut rpc_path qui restreint les opérations RPC dans certains répertoires (/ et /RPC2 par défaut).
- Le module socket supporte AF_NETLINK (pour plus d'information sur netlink : http://www.linuxjournal.com/article/7356).
- Ajout du module spwd pour accéder à /etc/shadow.
- Ajout de la fonction extractall() dans le module TarFile.
- Le module unicodedata a été mis à jour à la version 4.1.0 de la base de caractères unicode (pour des raisons de compatibilité l'ancien est disponible sous unicodedata.ucd_3_2_0).
- Ajout du module UUID permettant de générer des identifiants universels, conformément à la RFC 4122
>>> uuid.uuid1()
UUID('a8098c1a-f86e-11da-bd1a-00112444be1e') - Améliorations du module webbrowser, prise en charge de la PEP 0338, ajout de open_new(), open_new_tab(), et ajout d'un paramètre autoraise dans open()
- La bibliothèque standard Python n'a plus de module xml, elle a été renommée en xmlcore ce qui fait qu'il est toujours possible d'appeler la bibliothèque standard XML même si on a PyXML.
- xmlrpclib permet maintenant de retourner des objets datetime.
- zipfile supporte la version ZIP64 de ce format, et donc permet d'avoir un fichier zip supérieur à 4GiB et peut contenir des fichiers supérieurs à 4GiB chacun.
- Ajout du paquet ctypes qui permet d'utiliser des bibliothèques externes plus facilement qu'avec dl :
import ctypes
libc = ctypes.CDLL('libc.so.6')
result = libc.printf("Line of output\n").
- ElementTree est livré de base et ça c'est une très bonne nouvelle (c'est sur lui que se base lxml par exemple).
- Ajout de hashlib qui permet de hasher en ce qu'on veut.
- Ajout d'une implémentation WSGI.
- Quelques modifications de l'API C comme la possibilité de récupérer la version complète de Python depuis C, la possibilité de compiler CPython avec un compilateur C++ (que celui qui sait en quoi c'est utile me le dise, à part nettoyer le code), et d'autres ...
Et pour finir, quelque chose de magnifique : sqlite3 est fourni en standard avec Python !
Améliorations diverses
- quit() et exit() quitteront l'interpréteur.
- Optimisations
Aller plus loin
- PyQt (6 clics)
- PyQwt (4 clics)
- What is new in Python 2.5 (1 clic)
- Planning (PEP 356) (1 clic)
- Journal d'origine (2 clics)
- DLFP : Europython au CERN de Genève, 3 au 5 juillet 2006 (1 clic)
# Ouah
Posté par alexissoft . Évalué à 4.
J'ai commis une petite erreur (ou c'est à la modération ?) :
[^] # Re: Ouah
Posté par tuiu pol . Évalué à 2.
un modo pour corriger plize ?
# Licence
Posté par eMerzh (site web personnel) . Évalué à 7.
[^] # Re: Licence
Posté par Philippe F (site web personnel) . Évalué à 6.
# Thème python aux RMLL
Posté par Olivier Grisel (site web personnel) . Évalué à 1.
Le programme du thème python s'affine avec au menu (ca peut encore changer):
Jeudi :
- Initiation à Python
- Documentation de projet avec ReST et gestion de la qualité
- Programmer avec les tests
- Packager un projet python avec distutils et setuptools (les python eggs)
- Programmation XML simple et efficace : applications avec le format ODF et écriture d'un plugin inkscape
- Étendre Python avec ctypes et pyrex
- Zope-cookbook et ligthing talks
Vendredi :
- Initiation Zope 3 component architecture
- Présentation du moteur d'inférence bayesienne CPSBayes
- Ajax State of the art
- Mailwoman, un controlleur XML-RPC Zope 3
- Introduction à TurboGears
- Utilisation du framework Twisted
La page du wiki pour organiser ce thème python :
http://www.afpy.org/groups/gr_adherents/wikis/ReunionJuillet(...)
En plus on devrait avoir recu les nouveaux tshirts de l'Afpy qui seront en vente sur le stand de l'assoce.
[^] # Re: Thème python aux RMLL
Posté par Adrien Bourdet . Évalué à 2.
[^] # Re: Thème python aux RMLL
Posté par Olivier Grisel (site web personnel) . Évalué à 2.
En attendant, je bosse sur le svn de l'afpy pour suivre le work in progress si y'en a que ca interesse (y a pas encore grand chose mais bon ...) :
http://trac.afpy.org/browser/rmll_workshops
[^] # Re: Thème python aux RMLL
Posté par python_rulez . Évalué à 2.
C'est bien vu de ne pas empieter sur Europython, j'espere qu'il y aura du monde
[^] # Expressions conditionnelles
Posté par fakbill . Évalué à 2.
>>> import os
>>> a = "ERROR" if os.system("ls") != 0 else "OK"
>>> print a
OK
"
Cet exemple est mauvais car les expressions conditionnelles ont été conçues pour être le plus souvent comme suit :
contents = ((doc + '\n') if doc else '')
C'est à dire :
"Le cas le plus probable est 'doc est vrai' et dans ce cas, contents = ((doc + '\n') . Execptionnllement , ce sera faux et on exécutera ce qu'il y a après le else."
Dans l'esprit, c'est donc plutôt:
"OK" if os.system("ls") else a="ERROR" en supposant qu'on n'a peu de chance que ls ne fonctionne pas.
C'est façon de voir justifie cette syntaxe qui peut sembler assez étrange.
[^] # Re: Expressions conditionnelles
Posté par fakbill . Évalué à 1.
a= ("OK" if os.system("ls") = 0 else "ERROR")
Ca doit être correct cette fois...
# C et C++
Posté par espace . Évalué à 2.
Peut-être pour intégrer plus facilement l'interpréteur dans un projet en C++ pur ?
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.