Se rendre au contenu

Python 3.9 est sorti

5 octobre 2020 par
Python 3.9 est sorti
Makersquad

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.

Django REST Framework 3.12 est sorti