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.