Como implementar funções de switch case em Python? [2022]

Publicados: 2021-01-08

Índice

Introdução

Você já se perguntou se existe uma alternativa para escrever essas instruções If-else complexas em Python? Se você não quiser que várias instruções 'If' atrapalhem seu código, considere usar a instrução Switch case que fornece uma maneira mais limpa e rápida de implementar o fluxo de controle em seu código. Ao contrário de C++, Java, Ruby e outras linguagens de programação, o Python não fornece uma instrução switch case, mas oferece poucas soluções alternativas para fazer essa instrução funcionar.

Por exemplo, o Python permite que você crie seus trechos de código que funcionam como instruções case do Python Switch em outras linguagens de programação. Você conhecerá mais sobre as maneiras de implementar instruções switch-case posteriormente neste blog. Se você estiver interessado em aprender mais sobre python, confira nossos cursos de ciência de dados.

O que é uma instrução Switch em Python?

Em geral, o switch é um mecanismo de controle que testa o valor armazenado em uma variável e executa as instruções case correspondentes. A instrução switch case introduz o fluxo de controle em seu programa e garante que seu código não seja confuso por várias instruções 'if'.

Portanto, seu código parece meticuloso e transparente para os espectadores. É um recurso de programação maravilhoso que os programadores usam para implementar o fluxo de controle em seu código. A instrução switch case funciona comparando os valores especificados nas instruções case com variáveis ​​em seu código.

Como implementar a instrução do caso do switch Python

Se você sempre codificou em linguagens como C++ ou Java, pode achar estranho que o Python não tenha uma instrução switch case. Em vez disso, o Python oferece várias soluções alternativas, como um dicionário, classes Python ou funções lambda do Python para implementar instruções switch-case.

Se você quiser saber o motivo exato por trás de não ter uma instrução switch case em python, verifique PEP 3103 .

Antes de nos aprofundarmos nessas alternativas, vamos primeiro ver como uma função switch case normalmente funciona em outras linguagens de programação.

No exemplo abaixo, usamos a linguagem de programação C

switch (mêsDoAno) {

caso 1:

printf(“%s”, janeiro);

pausa;

caso 2:

printf(“%s”, fevereiro);

pausa;

caso 3:

printf(“%s”, março);

pausa;

caso 4:

printf(“%s”, abril);

pausa;

caso 5:

printf(“%s”, maio);

pausa;

caso 6:

printf(“%s”, junho);

pausa;

caso 7:

printf(“%s”, julho);

pausa;

caso 8:

printf(“%s”, agosto);

pausa;

caso 9:

printf(“%s”, setembro);

pausa;

caso 10:

printf(“%s”, outubro);

pausa;

caso 11:

printf(“%s”, novembro);

pausa;

caso 12:

printf(“%s”, dezembro);

pausa;

predefinição:

printf(“Mês incorreto”);

pausa;

}

Agora, vamos aprofundar as alternativas de função switch case do Python e entender como essas alternativas funcionam com a ajuda de exemplos.

Leia: Oportunidades de carreira em Python: tudo o que você precisa saber

Usando o mapeamento de dicionário

Se você estiver familiarizado com outras linguagens de programação, deve saber que o dicionário usa pares chave-valor para armazenar um grupo de objetos na memória. Quando você está usando um dicionário como alternativa às instruções switch-case, as chaves do par chave-valor funcionam como um caso.

O exemplo a seguir mostra a implementação da instrução switch case usando um dicionário. Aqui, estamos definindo uma função month() para imprimir qual mês, um mês do ano é.

Primeiro, comece criando instruções de caso e escreva funções individuais para cada caso. Certifique-se de escrever uma função que resolva o caso padrão.

def janeiro():

retornar “Janeiro”

def fevereiro():

retornar “Fevereiro”

def marcha():

retornar “marcha”

def abril():

retornar “abril”

def maio():

retornar “pode”

def junho():

retornar “junho”

def julho():

retornar “julho”

def agosto():

retornar “agosto”

def setembro():

retornar “setembro”

de outubro():

voltar “Outubro”

def novembro():

retornar “Novembro”

def dezembro():

retornar “dezembro”

def padrão():

retornar “Mês incorreto”

Em seguida, crie um objeto de dicionário em Python e armazene todas as funções que você definiu em seu programa.

alternador = {

0: 'janeiro',

1: 'fevereiro',

2: 'marcha',

3: 'abril',

4: 'pode',

5: 'junho',

6: 'julho',

7: 'agosto',

8: 'setembro',

9: 'outubro',

10: 'novembro',

11: 'dezembro'

}

Por fim, crie uma função switch em seu programa que aceite um inteiro como entrada, execute uma pesquisa de dicionário e invoque as funções correspondentes.

def mês(mêsDoAno):

return switcher.get(monthOfYear, default)()

O código completo ficará assim

def janeiro():

retornar “Janeiro”

def fevereiro():

retornar “Fevereiro”

def marcha():

retornar “marcha”

def abril():

retornar “abril”

def maio():

retornar “pode”

def junho():

retornar “junho”

def julho():

retornar “julho”

def agosto():

retornar “agosto”

def setembro():

retornar “setembro”

de outubro():

voltar “Outubro”

def novembro():

retornar “Novembro”

def dezembro():

retornar “dezembro”

def padrão():

retornar “Mês incorreto”

alternador = {

0: 'janeiro',

1: 'fevereiro',

2: 'marcha',

3: 'abril',

4: 'pode',

5: 'junho',

6: 'julho',

7: 'agosto',

8: 'setembro',

9: 'outubro',

10: 'novembro',

11: 'dezembro'

}

def mês(mêsDoAno):

return switcher.get(monthOfYear, default)()

print(interruptor(1))

imprima(interruptor(0))

O código acima imprime a seguinte saída

fevereiro

Janeiro

Leia também: 42 ideias e tópicos interessantes de projetos Python para iniciantes

Usando classes Python

Você também pode usar classes Python como uma alternativa para implementar instruções switch-case. Uma classe é um construtor de objetos que possui propriedades e métodos. Vamos entender isso melhor com a ajuda do mesmo exemplo acima. Aqui, vamos definir um método switch dentro de uma classe switch Python.

Exemplo

Primeiro, vamos definir um método switch dentro de uma classe switch Python que recebe um mês do ano como argumento, converte o resultado em uma string.

class PythonSwitch:

def mês(self, mêsDo ano):

default = “Mês incorreto”

return getattr(self, 'case_' + str(monthOf Year), lambda: default)()

Nota: No exemplo acima, usamos duas coisas: a palavra-chave lambda e o método getattr().

  • Usamos a palavra-chave lambda para definir uma função anônima em Python. A palavra-chave Lambda invoca a função padrão quando um usuário insere uma entrada inválida.
  • getattr() é usado para invocar uma função em Python.

Agora, crie funções individuais para cada caso.

def janeiro(self):

retornar “Janeiro”

def fevereiro(auto):

retornar “Fevereiro”

def marcha(auto):

retornar “março”

def abril(auto):

retornar “abril”

def pode (auto):

retornar “maio”

def junho(auto):

retornar “junho”

def julho (auto):

retornar “julho”

def agosto(self):

voltar “agosto”

def setembro(self):

retornar “setembro”

de outubro (auto):

voltar “Outubro”

def novembro(self):

retornar “Novembro”

def dezembro(auto):

retornar “dezembro”

O código completo ficará assim

class PythonSwitch:

def mês(self, mêsDo ano):

default = “Mês incorreto”

return getattr(self, 'case_' + str(monthOf Year), lambda: default)()

def janeiro(self):

retornar “Janeiro”

def fevereiro(auto):

retornar “Fevereiro”

def marcha(auto):

retornar “março”

def abril(auto):

retornar “abril”

def pode (auto):

retornar “maio”

def junho(auto):

retornar “junho”

def julho (auto):

retornar “julho”

def agosto(self):

voltar “agosto”

def setembro(self):

retornar “setembro”

de outubro (auto):

voltar “Outubro”

def novembro(self):

retornar “Novembro”

def dezembro(auto):

retornar “dezembro”

my_switch = PythonSwitch()

print (my_switch.mês(1))

print (my_switch.mês(10))

O código acima imprime a seguinte saída

Janeiro

Outubro

Confira: Salário do desenvolvedor Python na Índia

Conclusão

Neste blog, você aprendeu sobre instruções switch-case, quais são as alternativas de instruções switch-case e como usá-las. Conforme explicado acima, o Python não possui uma função switch case embutida, mas você sempre pode usar essas alternativas para deixar seu código limpo e com melhor desempenho.

Se você está curioso para aprender sobre ciência de dados, confira o Programa PG Executivo em Ciência de Dados do IIIT-B & upGrad, que é criado para profissionais que trabalham e oferece mais de 10 estudos de caso e projetos, workshops práticos práticos, orientação com especialistas do setor, 1 -on-1 com mentores do setor, mais de 400 horas de aprendizado e assistência de trabalho com as principais empresas.

Diferencie entre um dicionário comum e um dicionário Python.

Dicionário Python ou “Dict” é uma estrutura de dados embutida do Python que é usada para armazenar uma coleção desordenada de elementos. Ao contrário de outras estruturas de dados Python que armazenam valores únicos, a estrutura de dados do dicionário armazena pares chave-valor onde cada chave é única. Ele não lembra a ordem de inserção dos pares chave-valor e itera pelas chaves. Por outro lado, um Dicionário Ordenado ou OrderedDict mantém um controle da ordem de inserção dos pares chave-valor. Ele também consome mais memória do que um dicionário regular em Python devido à sua implementação de lista duplamente vinculada. Se você excluir e reinserir a mesma chave, ela será inserida em sua posição original, pois um OrderedDict lembra o pedido de inserção.

Quais operações de namedtuple o tornam uma opção conveniente para ser usada em casos de comutação?

A namedtuple em Python executa várias operações. A seguir está uma lista de algumas das operações mais comuns executadas pela namedtuple. Os elementos em uma namedtuple podem ser acessados ​​por seus índices, ao contrário de um dicionário. A maneira alternativa de acessar os elementos é pelo nome da chave. A função make() retorna uma tupla nomeada. A função _asadict() retorna um dicionário ordenado que é construído a partir dos valores mapeados. A função _replace() recebe um nome de chave como argumento e altera os valores mapeados para ele. A função _fileds() retorna todos os nomes de chave da tupla nomeada fornecida.

Quando preferimos listas para armazenar dados?

A lista Python é considerada a melhor estrutura de dados para armazenar os dados nos seguintes cenários - Uma lista pode ser usada para armazenar vários valores com diferentes tipos de dados e pode ser acessada apenas por seus respectivos índices. Quando você precisa realizar operações matemáticas sobre os elementos, uma lista pode ser usada, pois permite operar matematicamente os elementos diretamente. Como uma lista pode ser redimensionada, ela pode ser usada para armazenar os dados quando você não tiver certeza sobre o número de elementos a serem armazenados. Os elementos da lista são facilmente mutáveis ​​e também podem armazenar elementos duplicados, ao contrário de set e dicionário.