Introdução
Neste laboratório, aprenderemos como usar a nova declaração Switch Case do Python, também conhecida como Structural Pattern Matching (Correspondência Estrutural de Padrões), introduzida no Python 3.10. A declaração Switch Case nos permite corresponder padrões de uma forma mais fácil e legível em comparação com as declarações tradicionais if-elif-else.
Conquistas
- Declarações Switch Case
- Declarações if
Comparação com as Instruções if do Python
Antes de mergulharmos nos exemplos da declaração Switch Case do Python, vamos compará-la com as declarações tradicionais if-elif-else.
Considere o seguinte exemplo de correspondência de códigos de resposta HTTP:
response_code = 200
if response_code == 200:
print("OK")
elif response_code == 404:
print("404 Not Found")
elif response_code == 500:
print("Internal Server Error")
Podemos reescrever o mesmo exemplo usando a declaração Switch Case do Python da seguinte forma:
response_code = 201
match response_code:
case 200:
print("OK")
case 404:
print("404 Not Found")
case 500:
print("Internal Server Error")
Como pode ver, a declaração Switch Case do Python é mais concisa e fácil de ler em comparação com as declarações if-elif-else.
Aqui está a sintaxe para uma declaração switch case:
match term:
case pattern-1:
action-1
case pattern-2:
action-2
case pattern-3:
action-3
case _:
action-default
O term é o valor que você deseja corresponder aos padrões. O padrão pode ser um único valor, uma tupla, uma lista, uma classe embutida ou uma combinação destes usando o operador or (|). O _ é um padrão catch-all (pega-tudo) que corresponde a qualquer valor.
Correspondência com o Padrão 'or'
Neste exemplo, o caractere pipe (| ou or) permite que o Python retorne a mesma resposta para dois ou mais casos.
response_code = 502
match response_code:
case 200 | 201:
print("OK")
case 500 | 502:
print("Internal Server Error")
Isso imprimirá "Internal Server Error" porque o response_code é 500 ou 502.
Podemos usar o símbolo underscore _ para definir um caso padrão (default). Considere o seguinte exemplo:
response_code = 800
match response_code:
case 200 or 201:
print("OK")
case 500 or 502:
print("Internal Server Error")
case _:
print("Invalid Code")
Neste exemplo, a saída será "Invalid Code" porque o valor de response_code não é coberto por nenhum dos casos.
Correspondência com Classes Embutidas (Built-in)
Também podemos corresponder padrões com base em classes embutidas. Considere o seguinte exemplo:
response_code = ["300"]
match response_code:
case int():
print('response_code is a number')
case str():
print('response_code is a string')
case list():
print('response_code is a list')
case _:
print('response_code is a unknown type')
Isso imprimirá "response_code is a list" porque o response_code é uma lista.
Resumo
Neste laboratório, aprendemos como usar a instrução Switch Case do Python introduzida no Python 3.10. Comparamos com as instruções tradicionais if-elif-else e praticamos vários exemplos de correspondência de valores únicos, o padrão or, o comprimento de um iterável, o símbolo underscore para o caso padrão (default) e classes embutidas (built-in classes).
Espero que tenha gostado deste laboratório e aprendido algo novo!



