Pular para o conteúdo principal
InicioTutoriaisPython

Declaração de caso de troca do Python: Um guia para iniciantes

Explore o match-case do Python: um guia sobre sua sintaxe, aplicativos em ciência de dados, ML e uma análise comparativa com o switch-case tradicional.
abr. de 2024  · 5 min leer

O Python, diferentemente de outras linguagens de programação, não incluiu uma instrução de caso de troca tradicional até a versão 3.10. Neste tutorial, exploraremos como o equivalente ao caso de troca do Python funciona e como ele pode ser implementado usando o recurso de correspondência de padrão estrutural do Python.

Entendendo as declarações de caso de switch tradicionais

Antes do Python 3.10, os desenvolvedores do Python tinham que usar várias instruções if-elif-else ou dicionários para simular a funcionalidade de caso de troca. 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.

Apresentando o Match e o Case no Python 3.10

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

Entendendo a sintaxe básica

Vamos considerar um cenário em que queremos categorizar os dias da semana em categorias de fim de semana ou dia da semana e também identificar um dia específico. Veja como podemos usar a instruçã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 recebendo a entrada do usuário para o dia da semana e usamos o método capitalize() para formatá-lo adequadamente (primeira letra em maiúscula, as demais em minúscula).
  • Usando a declaração match: Em seguida, usamos o site match 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 bit a bit OR, é usado para fazer a correspondência de qualquer um dos vários padrões. Se a entrada for qualquer uma dessas opções, será impresso que o dia é um fim de semana.
    • O segundo caso abrange todos os dias da semana, verificando cada um deles. Se a entrada corresponder a qualquer dia da semana, será impresso que o dia é um dia da semana.
  • The Fallback Case (_): O último caso funciona como um padrão (instrução `else`), capturando qualquer entrada que não corresponda aos dias conhecidos, indicando uma entrada inválida.
  • Não há declarações de interrupção: Observe que não é necessário usar break após cada caso. O Python encerra automaticamente a instrução match após uma correspondência bem-sucedida.

A sintaxe do match-case é mais legível e concisa em comparação com uma série de instruções if-elif-else.

Casos de uso avançados de Match e Case em Python

Aplicativos de ciência de dados

A instrução match-case do Python pode ser muito útil em tarefas de pré-processamento de dados na ciência de dados. O pré-processamento geralmente 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, talvez você queira 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 if-else complexa e torna o código mais legível e de fácil manutenção, especialmente ao lidar com grandes conjuntos de dados com várias categorias.

Cenários de aprendizado de máquina

No aprendizado de máquina, é fundamental lidar com diferentes tipos de entradas de dados. A estrutura do match-case pode ser empregada para extração de recursos ou inferência de modelos. Por exemplo, em um modelo de aprendizado de máquina que prevê condições climáticas, o match-case pode ser usado para categorizar faixas de temperatura em "Frio", "Quente" e "Quente", que podem ser usados como recursos de entrada para o modelo.

Armadilhas comuns e práticas recomendadas do caso Python Switch

Dicas de depuração

Um erro comum ao usar o match-case em Python é esquecer de incluir o sublinhado (_) para o caso padrão, semelhante ao 'else' nas declarações 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 sobre o desempenho

Embora a instrução match-case seja uma ferramenta poderosa, seu impacto no desempenho do código Python, especialmente em aplicativos de grande escala, deve ser considerado. Em cenários com um grande número de casos ou correspondência de padrões complexos, o desempenho pode ser afetado. Criar perfis e testar o desempenho de seu código em cenários reais é fundamental para entender e atenuar possíveis problemas de desempenho.

Python Match-Case versus Switch-Case tradicional

Análise comparativa

O match-case do Python difere significativamente das instruções tradicionais de switch-case encontradas em linguagens como Java ou C++. Em Java, por exemplo, a instrução switch limita-se a corresponder apenas a valores escalares (como inteiros e tipos de enum), enquanto o match-case do Python oferece um recurso 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 avançada, mas também exige uma compreensão mais profunda dos conceitos de correspondência de padrões.

Guia de transição

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

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

Conclusão

A introdução das instruções match e case na versão 3.10 do Python oferece um recurso muito aguardado pelos desenvolvedores familiarizados com as instruções switch case em outras linguagens. Ele oferece uma maneira limpa e concisa de lidar com várias condições, melhorando a legibilidade e a manutenção do código.

Você pode ler mais sobre as funções Python em nosso tutorial completo e explorar esse e outros conceitos em nosso curso Python Intermediário.

Temas

Aprenda Python hoje mesmo

Course

Intermediate Python

4 hr
1.1M
Level up your data science skills by creating visualizations using Matplotlib and manipulating DataFrames with pandas.
See DetailsRight Arrow
Start Course
Veja MaisRight Arrow
Relacionado

blog

Como aprender Python do zero em 2024: um guia especializado

Descubra como aprender Python, suas aplicações e a demanda por competências em Python. Comece sua jornada em Python hoje mesmo ​com nosso guia detalhado.
Matt Crabtree's photo

Matt Crabtree

19 min

Data Skills

blog

6 práticas recomendadas de Python para um código melhor

Descubra as práticas recomendadas de codificação Python para escrever os melhores scripts Python da categoria.
Javier Canales Luna 's photo

Javier Canales Luna

13 min

Python Programming Language

blog

O que é Python? - A linguagem de programação mais versátil

Poucas linguagens de programação capturaram a atenção de tantos programadores em um espaço de tempo tão curto. Cientistas de dados, desenvolvedores da Web, desenvolvedores de software - muitos se voltaram para o Python como sua linguagem preferida. Neste artigo, falaremos sobre o motivo.
Summer Worsley's photo

Summer Worsley

18 min

blog

Mais de 60 projetos Python para todos os níveis de conhecimento

60 ideias de projetos de ciência de dados que os cientistas de dados podem usar para criar um portfólio sólido, independentemente de sua especialização.
Bekhruz Tuychiev's photo

Bekhruz Tuychiev

16 min

blog

As 7 melhores certificações em Python para todos os níveis

Descubra se uma certificação em Python é adequada para você, quais são as melhores opções e as alternativas oferecidas neste guia abrangente.
Matt Crabtree's photo

Matt Crabtree

18 min

tutorial

21 ferramentas essenciais do Python

Aprenda sobre as ferramentas Python essenciais para o desenvolvimento de software, raspagem e desenvolvimento da Web, análise e visualização de dados e aprendizado de máquina.
Abid Ali Awan's photo

Abid Ali Awan

6 min

See MoreSee More