A correspondência de padrões em [[Linguagem de programação Python|Python]] permite que uma dada expressão seja avaliada com base em certos casos. Aqui está uma demonstração de seu uso.
```python
command = "swing sword"
[action, obj] = command.split()
match command.split():
case["get", obj]:
print("Getting the " + obj)
case["swing", obj]:
print('Swinging the ' + obj + '! AHHHH!')
case _: # Curinga para qualquer outro caso de correspondência
raise ValueError("Don't know how to " + command)
# Resultado: Swinging the sword! AHHHH!
# Você pode alterar o comando para incluir outros elementos. ```
Um exemplo mais complexo envolve a desestruturação de dados usando [[Unpacking sequences and iterables in Python]] da seguinte forma:
```python
metro_areas = [
('Tokyo', 'JP', 36.933, (35.689722, 139.691667)),
('Delhi NCR', 'IN', 21.935, (28.613889, 77.208889)),
('Mexico City', 'MX', 20.142, (19.433333, -99.133333)),
('New York-Newark', 'US', 20.104, (40.808611, -74.020386)),
('São Paulo', 'BR', 19.649, (-23.547778, -46.635833)),
]
def main():
print(f'{"":15} | {"latitude":>9} | {"longitude":>9}')
for record in metro_areas:
match record:
case [name, _, _, (lat, lon)] if lon <= 0:
print(f'{name:15} | {lat:9.4f} | {lon:9.4f}')
main()
# resultados:
# | latitude | longitude
# Mexico City | 19.4333 | -99.1333
# New York-Newark | 40.8086 | -74.0204
# São Paulo | -23.5478 | -46.6358
```
:: **Referência** :: [PEP 634 – Structural Pattern Matching: Specification](https://peps.python.org/pep-0634/)