Se rendre au contenu

Python 3.7 est sorti

27 juin 2018 par
Python 3.7 est sorti
Makersquad

Date de sortie : 27 juin 2018

Documentation officielle : What’s New in Python 3.7

Python 3.7 est une release qui fait du bien. Entre les dataclasses qui nous évitent d’écrire du boilerplate, breakpoint() qui simplifie le debugging, et asyncio.run() qui rend l’async enfin accessible — cette version pose les bases du Python moderne.


Les nouveautés principales

dataclasses — fini le boilerplate

Combien de fois avez-vous écrit self.x = x ? Le décorateur @dataclass génère automatiquement __init__, __repr__, __eq__ :

from dataclasses import dataclass

@dataclass
class Point:
    x: float
    y: float
    z: float = 0.0

p = Point(1.5, 2.5)
print(p)  # Point(x=1.5, y=2.5, z=0.0)


breakpoint() — un mot de moins à taper

Fini import pdb; pdb.set_trace(). Une seule fonction built-in suffit maintenant :

def process(data):
    breakpoint()  # Ouvre pdb automatiquement
    return transform(data)

Désactivable via PYTHONBREAKPOINT=0.


contextvars — variables de contexte async-safe

Alternative thread-safe aux variables thread-local, conçue pour l’async :

from contextvars import ContextVar

request_id: ContextVar[str] = ContextVar('request_id')

async def handle_request(id):
    request_id.set(id)
    await process()


Améliorations d’asyncio

  • asyncio.run() — exécuter une coroutine depuis du code synchrone
  • asyncio.create_task() — créer une tâche facilement
  • Meilleure performance globale
import asyncio

async def main():
    await asyncio.sleep(1)
    print("Done!")

asyncio.run(main())  # Nouveau !


Fonctions temps nanoseconde

Six nouvelles fonctions pour la précision nanoseconde :

import time

ns = time.time_ns()
perf = time.perf_counter_ns()


Autres améliorations

  • dict conserve l’ordre d’insertion (garanti par le langage — ce n’était qu’un détail d’implémentation en 3.6)
  • datetime.fromisoformat() pour parser les dates ISO sans regex
  • async/await deviennent des mots-clés réservés
  • Annotations évaluées en différé (opt-in via __future__)


Échanger avec un expert Python

Nous revenons vers vous sous 24h.


Chez Makersquad, nous mettons notre expertise Python au service de projets ambitieux et durables. Que ce soit pour le développement d’applications web, la conception d’API, l’automatisation de processus, la data ou l’optimisation de performances, nous accompagnons nos clients à chaque étape. Si vous avez un besoin en Python, un nouveau projet, une refonte, un audit: notre équipe est prête à vous aider à concevoir des solutions robustes, évolutives et maintenables.


À retenir

Python 3.7 marque un tournant dans l’ergonomie du langage. Les dataclasses à elles seules justifient la migration. Si vous êtes encore en 3.6, c’est le moment de franchir le pas.

Django Ninja 1.0 est sorti