La correspondance de motifs arrive dans Python

Par:
fredericmazue

jeu, 11/02/2021 - 12:25

La correspondance de motifs, ou pattern matching, est une fonctionnalité très courante des langages de programmation. Réduite à sa plus simple expression avec la construction switch/case dans le langage C, elle prend des formes très évoluées avec des langages fonctionnels comme Haskell par exemple, où elle permet de traiter des données structurées.

Python est un langage qui emprunte beaucoup à la programmation fonctionnelle, mais jusqu'ici la correspondance de motifs ne fait pas partie de ces fonctionnalités. Non seulement elle n'en fait pas partie, mais la question de son ajout était très controversée dans la communauté Python.

Finalement, le conseil de pilotage de Python a annoncé l'adoption de la correspondance de motifs comme future fonctionnalité du langage.

Nous reconnaissons que la correspondance de motifs est un changement important pour Python et que ce changement ne pouvait pas obtenir le consensus. [...] Nous savons que la correspondance de motifs a été une fonctionnalité difficile à spécifier, qui a suscité des discussions et des conversations de conception considérables [...] après de longues délibérations et avoir étudié tous les points de vue, nous sommes convaincus que la correspondance de motifs sera un excellent ajout à Python, écrit le conseil de pilotage.


Du code Python pourra donc bientôt ressembler à ça :

match value:
  case [*v, label := (Promise() | str())] if v:
    value = tuple(v)
  case _: label = key.replace('_', ' ').title()

Cette correspondance de motifs est entièrement spécifiée, avec une grammaire complète, dans la proposition PEP 634. Elle devrait être implémentée dès Python 3.10.