Date de sortie : 5 octobre 2020
Documentation officielle : What’s New in Python 3.9
Python 3.9 simplifie le quotidien. L’opérateur | pour merger des dicts, list[str] au lieu de List[str], et removeprefix()/removesuffix() — des petites choses qui font gagner du temps chaque jour.
Les nouveautés principales
Opérateurs de fusion pour dict — élégance retrouvée
Merge et update avec | et |= :
defaults = {"theme": "light", "lang": "fr"}
user_prefs = {"theme": "dark"}
# Fusion (nouveau dict)
config = defaults | user_prefs
# {'theme': 'dark', 'lang': 'fr'}
# Update in-place
defaults |= user_prefs
Génériques natifs — adieu from typing import
Moins d’imports, plus de clarté :
# Avant
from typing import List, Dict
def process(items: List[str]) -> Dict[str, int]:
...
# Après
def process(items: list[str]) -> dict[str, int]:
...
Fonctionne avec list, dict, set, tuple, frozenset, etc.
str.removeprefix() et str.removesuffix()
Suppression propre des préfixes/suffixes :
"HelloWorld".removeprefix("Hello") # "World"
"test_file.py".removesuffix(".py") # "test_file"
# Avant, on faisait :
s[len(prefix):] if s.startswith(prefix) else s
Module zoneinfo — fuseaux horaires IANA
Support natif des fuseaux horaires :
from zoneinfo import ZoneInfo
from datetime import datetime
paris = datetime.now(ZoneInfo("Europe/Paris"))
tokyo = paris.astimezone(ZoneInfo("Asia/Tokyo"))
Module graphlib — tri topologique
Pour les graphes de dépendances :
from graphlib import TopologicalSorter
deps = {"A": {"B", "C"}, "B": {"C"}, "C": set()}
ts = TopologicalSorter(deps)
list(ts.static_order()) # ['C', 'B', 'A']
Nouveau parser PEG
CPython utilise un nouveau parser plus flexible, ouvrant la voie à de futures améliorations syntaxiques.
Autres améliorations
- math.lcm() — plus petit commun multiple
- math.gcd() accepte plusieurs arguments
- asyncio.to_thread() — exécuter du code bloquant
- random.randbytes() — bytes aléatoires
- Cycle de release annuel (PEP 602)
É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.9 est une release “quality of life”. Pas de révolution, mais des améliorations concrètes qui rendent le code plus lisible. Le passage à list[str] au lieu de List[str] à lui seul vaut la mise à jour.