Declaração Switch Case em Python: Um Guia para Iniciantes

Python, ao contrário de algumas outras linguagens de programação, não incluiu uma declaração tradicional de switch case até a versão 3.10. Neste tutorial, exploraremos como o equivalente ao switch case do Python funciona e como ele pode ser implementado usando o recurso de correspondência de padrões estruturais do Python.

Entendendo as Declarações Tradicionais de Switch Case

Antes do Python 3.10, os desenvolvedores de Python tinham que usar várias declarações if-elif-else ou dicionários para simular a funcionalidade de switch case. Aqui está um exemplo básico usando if-elif-else:

day = input("Enter the day of the week: ").capitalize() if day == "Saturday" or day == "Sunday": print(f"{day} is a weekend.") elif day in ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"]: print(f"{day} is a weekday.") else: print("That's not a valid day of the week.")
Saturday is a weekend.

Introduzindo Match e Case no Python 3.10

Com o Python 3.10, a declaração match e as palavras-chave case foram introduzidas, proporcionando uma solução mais elegante, semelhante às declarações tradicionais de switch case em outras linguagens.

Entendendo a Sintaxe Básica

Vamos considerar um cenário onde queremos categorizar os dias da semana em categorias de fim de semana ou dia de semana, e também identificar um dia específico. Veja como podemos usar a declaração match:

day = input("Enter the day of the week: ").capitalize() match day: case "Saturday" | "Sunday": print(f"{day} is a weekend.") case "Monday" | "Tuesday" | "Wednesday" | "Thursday" | "Friday": print(f"{day} is a weekday.") case _: print("That's not a valid day of the week.")
Monday is a weekday.
  • Entrada do Usuário e Método capitalize(): Começamos pegando a entrada do usuário para o dia da semana e usamos o método capitalize() para formatá-lo corretamente (primeira letra maiúscula, outras minúsculas).
  • Usando a Declaração match: Em seguida, usamos match para avaliar a variável day.
  • Pesquisa de Padrões com case:
    • O primeiro case verifica se a entrada é “Saturday” (Sábado) ou “Sunday” (Domingo). O símbolo “|” também conhecido como operador OR bitwise é usado para corresponder a um dos múltiplos padrões. Se a entrada for qualquer um destes, imprime que o dia é um fim de semana.
    • O segundo caso abrange todos os dias da semana verificando contra cada um. Se a entrada corresponder a algum dia da semana, imprime que o dia é um dia da semana.
  • Caso de Recuo (_): O último caso age como um padrão padrão (`else` statement), capturando qualquer entrada que não corresponder aos dias conhecidos, indicando uma entrada inválida.
  • Não há declarações break: Note que não precisamos usar break após cada caso. O Python sai automaticamente da estrutura de correspondência após um correspondimento bem-sucedido.

A sintaxe de correspondência case é mais legível e concisa em comparação com uma série de if-elif-else statements.

Casos de Uso Avançados de Correspondência e Caso em Python

Aplicações de ciências de dados

A instrução match-case do Python pode ser altamente útil nas tarefas de pré-processamento de dados em ciência de dados. O pré-processamento muitas vezes envolve categorizar dados em diferentes grupos com base em critérios específicos.

Por exemplo, em um conjunto de dados de animais, você pode querer categorizá-los com base em sua classe, como mamíferos, aves, répteis, etc. Aqui está um exemplo simplificado:

animal = "Eagle" match animal: case "Eagle" | "Parrot": print("Bird") case "Lion" | "Tiger": print("Mammal") case "Python" | "Crocodile": print("Reptile") case _: print("Unknown Class")
Bird

Essa abordagem simplifica a lógica complexa de if-else e torna o código mais legível e manutenível, especialmente quando se trata de grandes conjuntos de dados com várias categorias.

Cenários de aprendizado de máquina

Em aprendizado de máquina, manipular diferentes tipos de entradas de dados é crucial. A estrutura match-case pode ser empregada para extração de características ou inferência de modelos. Por exemplo, em um modelo de aprendizado de máquina que prevê condições climáticas, match-case pode ser usado para categorizar faixas de temperatura em ‘Frio’, ‘Quente’, ‘Calor’, que podem então ser usadas como características de entrada para o modelo.

Python Switch Case Dificuldades Comuns e Melhores Práticas

Dicas de depuração

Um erro comum ao usar match-case em Python é esquecer de incluir o underscore (_) para o caso padrão, semelhante ao ‘else’ em statements if-else tradicionais. Isso pode levar a comportamentos inesperados se nenhum dos casos específicos for correspondido. Sempre inclua um caso padrão para lidar com valores inesperados ou diversos.

Considerações de desempenho

Enquanto a instrução de correspondência de casos é uma ferramenta poderosa, seu impacto no desempenho do código Python, particularmente em aplicações em grande escala, deve ser considerado. Em cenários com muitos casos ou correspondência de padrões complexos, o desempenho pode potencialmente ser afetado. A análise de perfil e teste de seu código para desempenho em cenários do mundo real é crucial para compreender e mitigar quaisquer potenciais problemas de desempenho.

Python Match-Case versus Switch-Case Tradicional

Análise comparativa

O match-case do Python difere significativamente das instruções switch-case tradicionais encontradas em linguagens como Java ou C++. Em Java, por exemplo, a instrução switch é limitada a correspondência apenas de valores escalares (como inteiros e tipos enum), enquanto o match-case do Python oferece uma capacidade de correspondência de padrões muito mais flexível, permitindo a correspondência de tipos de dados complexos, como sequências e instâncias de classe. Isso faz com que a implementação do Python seja mais poderosa, mas também requer uma compreensão mais profunda dos conceitos de correspondência de padrões.

Guia de transição

Para programadores familiarizados com instruções switch-case tradicionais em linguagens como C++ ou Java, a transição para o match-case do Python requer uma mudança de pensamento da correspondência simples de valores para a correspondência de padrões.

É importante entender que o match-case do Python é mais do que apenas um switch-case; é uma ferramenta versátil para desconstelar tipos de dados e extrair informações de estruturas complexas. A prática com diferentes tipos de dados e padrões é fundamental para dominar seu uso.

Conclusão

A introdução do comando match e case no Python na versão 3.10 fornece uma funcionalidade longamente aguardada para desenvolvedores que estão familiarizados com as estruturas switch case de outras linguagens. Ele oferece uma maneira limpa e concisa para lidar com múltiplas condições, melhorando a legibilidade e a manutenção do código.

Você pode ler mais sobre Funções no Python em nossa tutorial completo e explorar esta e outras conceitos em nosso Curso Intermediário de Python.

Source:
https://www.datacamp.com/tutorial/python-switch-case