Python, diferentemente de outras linguagens de programação, não incluiu uma estrutura de switch case tradicional até a versão 3.10. Neste tutorial, nós exploraremos como o equivalente de switch case em Python funciona e como ele pode ser implementado usando a funcionalidade de padrão de estrutura em Python.
Compreensão de Instruções Switch Case Tradicionais
Antes da versão 3.10 do Python, os desenvolvedores do Python tinham que usar várias instruçõ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.
Introdução do Comando Match e Case no Python 3.10
Com a versão 3.10 do Python, o comando match e as palavras-chave case foram introduzidas, fornecendo uma solução mais elegante semelhante a instruções switch case tradicionais em outras linguagens.
Compreensão da Sintaxe Básica
Vamos considerar um cenário onde queremos categorizar dias da semana em categorias de fim de semana ou dias de semana e também identificar um dia específico. Aqui é como podemos usar o comando 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étodocapitalize()
para formatá-lo corretamente (primeira letra em maiúsculo, as outras em minúsculo). - Usando o Comando
match
: Em seguida, usamosmatch
para avaliar a variável de dia. - Correspondência de padrões com
case
:- O primeiro
case
verifica se a entrada é “Sábado” ou “Domingo”. O símbolo “|”, também conhecido como operador OU bit a bit, é usado para corresponder a qualquer um dos vários padrões. Se a entrada for qualquer um desses, ele imprime que o dia é final de semana. - O segundo caso cobre todos os dias úteis, verificando cada um deles. Se a entrada corresponder a qualquer dia útil, ele imprime que o dia é um dia de semana.
- O primeiro
- O Caso de Reserva (
_
): O último caso atua como padrão (`else` statement), capturando qualquer entrada que não corresponda aos dias conhecidos, indicando uma entrada inválida. - Sem instruções de quebra: Repare que não precisamos usar
break
após cada caso. O Python sai automaticamente da instrução de correspondência após uma correspondência bem-sucedida.
A sintaxe match-case é mais legível e concisa em comparação com uma série de instruções if-elif-else.
Usos avançados de Match e Case no Python
Aplicações em ciência de dados
A estrutura de match-case do Python pode ser altamente útil em tarefas de pré-processamento de dados em ciência dos dados. O pré-processamento frequentemente envolve a categorização de 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 na 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
Este método simplifica a lógica complexa de if-else e torna o código mais legível e mantível, especialmente quando se trata de grandes conjuntos de dados com múltiplas categorias.
Cenários de aprendizagem de máquina
No aprendizagem de máquina, o tratamento de 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 aprendizagem de máquina que prevê condições meteorológicas, o match-case pode ser usado para categorizar intervalos de temperatura em ‘Frio’, ‘Quente’, ‘Calor’, o que então pode ser usado como features de entrada para o modelo.
Pitfalls e melhores práticas da estrutura switch case do Python
Dicas de depuração
Um erro comum ao usar match-case em Python é esquecer incluir o underline (_
) para o caso padrão, semelhante ao ‘else’ em declarações if-else tradicionais. Isso pode resultar em comportamentos inesperados se nenhum dos casos específicos forem correspondidos. Sempre inclua um caso padrão para lidar com valores inesperados ou variáveis.
Considerações de desempenho
Você deve considerar que, embora a instrução de correspondência de casos seja uma ferramenta poderosa, seu impacto no desempenho do código Python, especialmente em aplicações de grande escala, deve ser levado em conta. Em cenários com muitos casos ou correspondência de padrões complexos, o desempenho pode potencialmente ser afetado. A avaliação de desempenho e testes de seu código em cenários reais é fundamental para entender e mitigar quaisquer potenciais problemas de desempenho.
Python Match-Case versus Switch-Case tradicional
Análise comparativa
A estrutura match-case do Python difere significativamente das instruções switch-case tradicionais encontradas em linguagens como Java ou C++. Por exemplo, no Java, a instrução switch está 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 torna a implementação do Python mais poderosa, mas também requer um entendimento mais profundo 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 um simples switch-case; é uma ferramenta versátil para desconstuir tipos de dados e extrair informações de estruturas complexas. Praticar com diferentes tipos de dados e padrões é fundamental para dominar seu uso.
Conclusão
Python introduziu as instruções match e case na versão 3.10, fornecendo uma funcionalidade muito aguardada por desenvolvedores familiarizados com instruções switch case em outras linguagens. Ela oferece uma forma limpa e concisa de lidar com múltiplas condições, melhorando a legibilidade e manutenibilidade do código.
Você pode ler mais sobre Funções do Python em nosso tutorial completo e explorar este e outros conceitos em nosso curso de Python Intermediário.
Source:
https://www.datacamp.com/tutorial/python-switch-case