Python 3.4 est disponible
Avec 7 nouveaux modules et plusieurs nouveautés

Le , par Francis Walter, Expert éminent sénior
Le langage de programmation Python s’est enrichi d’une toute nouvelle version. Il n’y a pas moins de 7 nouveaux modules entre Python 3.4 et 3.3 (séparés de 18 mois), tandis qu’entre Python 3.3 et Python 2.7 (séparés de 27 mois) il y en avait huit. En termes de propositions d’améliorations, 14 PEP (Python Enhancement Proposals) ont été implémentées dans Python 3.4.

Les 7 nouveaux modules sont sans doute le changement le plus important opéré pour cette nouvelle version de Python 3.4. Le gestionnaire des versions de Python, Larry Hastings et son équipe de développeurs ont ainsi mis sur pied :

  • un nouveau module de programmation asynchrone (PEP 3156) nommé asyncio ;
  • Ensurepip, un installeur du programme pip (PEP 453) ;
  • Enum, une prise en charge des types d’énumération (PEP 435) ;
  • Pathlib, une API orientée objet de manipulation de chemins du système de fichiers (PEP 428) ;
  • Selectors, un multiplexage d’entrées‐sorties haut niveau et efficace, basé sur les primitives du module select et faisant parti de la PEP 3156 ;
  • Statistics, des fonctions pour calculer des statistiques mathématiques de données numériques (PEP 450) ;
  • tracemalloc pour tracer les allocations mémoires de Python (PEP 454).


Au-delà de ces nouveaux modules, Python 3.4 se distingue aussi par de nouvelles fonctionnalités qui viennent corriger les insuffisances de la dernière version. Les fichiers et sockets nouvellement créés sont par exemple marqués comme « non héritables », évitant ainsi de les passer aux processus fils, ce qui était la cause de nombreux problèmes et failles de sécurité listés dans la PEP 446.

Une nouvelle option en ligne de commande pour lancer Python dans un mode isolé du système est désormais disponible. Enfin, la gestion des codecs et le format de sérialisation marshal ont été améliorés et la complétion des commandes par la touche de tabulation est maintenant activée par défaut dans l’interpréteur interactif.

Des améliorations significatives ont été apportées à certains modules. Un nouveau protocole de sérialisation pour le module Pickle (PEP 3154) plus compact et permettant de sérialiser des objets qui ne pouvaient pas l’être avec Python 3.3 a été adopté. Les modules inspect et pydoc sont désormais capables de faire de l’introspection de manière correcte sur une plus grande variété d’objets « callables » (qu’on peut appeler comme une fonction), ce qui améliore la sortie de la commande help() dans l’interpréteur interactif de Python. L’API du module ipaddress a aussi été déclarée stable.

Python 3.4 n’est pas resté en marge d’un renforcement de la sécurité de la part des développeurs. Une nouvelle fonction de hachage sûre nommée SipHash est dorénavant utilisée par défaut. Le module multiprocessing a une nouvelle option pour éviter d’utiliser os.fork() sous UNIX : les modes spawn et forkserver sont plus sûrs, car ils évitent de partager des données avec les processus fils.

Sous Windows, les processus fils n’héritent plus de tous les handles parents, uniquement ceux qui sont nécessaires sont hérités. Tous les modules de la bibliothèque standard qui gèrent la SSL prennent maintenant en compte la validation du certificat serveur, y compris la validation du nom d’hôte et la vérification de la liste de révocation de certificats W (Certificate Revocation Lists). Il faut noter qu’une amélioration de l’implémentation CPython Safe object finalization (PEP 442) a été aussi faite.

Alors qu’initialement, la date de sortie était prévue pour le 22 février 2014, il a été choisi de repousser la sortie pour corriger les bogues majeurs, plutôt que de publier une version boguée. Comme d’habitude, l’ajout de nouvelles fonctionnalités était proscrit pendant deux mois dans la branche de développement principale (« default »).

Une rencontre mondiale Python regroupant plusieurs milliers de développeurs aura lieu du 9 avril au 17 avril prochain à Montréal. Les nouveautés de Python 3.4 seront présentées, et une discussion sera menée autour des nouveaux développements. Le plus grand défi est de rendre plus en plus de modules compatibles.

Source : blog Python

Et vous ?
Que pensez-vous des nouvelles fonctionnalités ?


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de mounir231 mounir231 - Nouveau Candidat au Club https://www.developpez.com
le 27/05/2014 à 21:02
est ce que les programmes programmées avec python 2.7 fonctionne sans problème sue python 3.4
Avatar de wiztricks wiztricks - Modérateur https://www.developpez.com
le 28/05/2014 à 0:38
Citation Envoyé par mounir231  Voir le message
est ce que les programmes programmées avec python 2.7 fonctionne sans problème sue python 3.4

En général, non. Sinon cette version s’appellerait Python 2.11 et non 3.4.
- W
Avatar de sweetasnz sweetasnz - Membre averti https://www.developpez.com
le 24/03/2015 à 11:15
question bête (car je pense déjà connaitre la réponse) :
Au-delà des nouvelles fonctionnalités et autres corrections des versions mineures supérieures de python3.x,
puis-je faire tourner un script python3 avec tous les "runtime python3", comme v3.1, v3.2, v3.3 ou v3.4 ?
En résumé, puis-je déployer un script chez sur une station sur laquelle est installé python3, sans connaitre la version mineure qu'il utilise .. si la syntaxe respecte python3.x (encore une fois, si mon code ne fait pas appel aux fonctionnalités spécifiques de la dernière release) ?

Merci
Avatar de wiztricks wiztricks - Modérateur https://www.developpez.com
le 24/03/2015 à 12:10
Citation Envoyé par sweetasnz  Voir le message
puis-je faire tourner un script python3 avec tous les "runtime python3", comme v3.1, v3.2, v3.3 ou v3.4 ?

En résumé, puis-je déployer un script chez sur une station sur laquelle est installé python3, sans connaitre la version mineure qu'il utilise .. si la syntaxe respecte python3.x (encore une fois, si mon code ne fait pas appel aux fonctionnalités spécifiques de la dernière release) ?

L'intention des développeurs Python est de faire que les codes qui fonctionnaient en 3.1, 3.2 ou 3.3 fonctionnent aussi en 3.4 (sans changement).
Malgré le soin pris pour faire que cela soit ainsi, il peut y avoir des "oops".
C'est la raison pour laquelle on fait passer son application par des tests dit de non-regression pour s'assurer que...

- W
Offres d'emploi IT
h/f Développeur web front-end
1000MERCIS - Ile de France - Paris (75000)
Développeur backend python h/f
Multiposting - Ile de France - Paris (75000)
Développeur c++
EASY PARTNER - Rhône Alpes - Grenoble (38000)

Voir plus d'offres Voir la carte des offres IT
Contacter le responsable de la rubrique Python