A instrução de mudança do Python

Introdução

A instrução switch é uma ferramenta poderosa e conveniente para controlar o fluxo do seu programa. Ele permite que você crie múltiplas ramificações de código de forma rápida e fácil, dependendo do valor de uma determinada variável ou expressão. É comumente usado quando você precisa executar lógicas diferentes dependendo do valor de uma determinada variável, que pode ter mais de 2 (mas um número finito) de valores.

Neste artigo, exploraremos como usar a instrução switch em Python e discutiremos suas vantagens sobre outras estruturas de controle. Quer você seja novo em Python ou um desenvolvedor experiente, a instrução switch pode ajudá-lo a escrever um código mais limpo e eficiente.

Antes da v3.10

Antes que a instrução switch do Python estivesse disponível nativamente na linguagem, os programadores tinham que usar outras estruturas de controle para obter a mesma funcionalidade. Uma abordagem comum era usar uma série de instruções if-else, com cada ramo do código associado a um valor diferente da variável que estava sendo testada.

Por exemplo, considere o seguinte código:

value = "foo"

if value == "foo":
    print("foo was selected")
elif value == "bar":
    print("bar was selected")
else:
    print("Nothing valid was selected")

Neste código, estamos usando uma instrução if-else para determinar qual ramo do código executar com base no valor da variável value. Se value for igual a “foo”, a primeira ramificação do código será executada. Se value for igual a “bar”, a segunda ramificação do código será executada. Caso contrário, o código no else bloco será executado.

Embora essa abordagem funcione, ela pode rapidamente se tornar complicada à medida que o número de valores possíveis para a variável aumenta. Além disso, pode dificultar a leitura e compreensão do código.

Outra abordagem que pode ser usada para criar uma instrução semelhante a switch em Python é usar um dicionário. Nesta abordagem, as chaves do dicionário são os valores possíveis da variável que está sendo testada e os valores são os ramos correspondentes do código.

Por exemplo, considere o seguinte código:

value = "foo"

switch = {
    "foo": lambda: print("foo was selected"),
    "bar": lambda: print("bar was selected"),
    "default": lambda: print("Nothing valid was selected"),
}

switch.get(value, "default")()

Neste código, definimos um dicionário chamado switch, com chaves representando os possíveis valores da variável value. Para cada chave, atribuímos uma função lambda como valor, que contém o ramo de código correspondente. Para executar o ramo apropriado do código, usamos o get() método do dicionário, que nos permite especificar um valor padrão a ser usado se a chave fornecida não existir no dicionário.

Embora esta abordagem seja mais flexível e compacta do que usar instruções if-else, ainda pode ser difícil de ler e compreender, especialmente se o código em cada ramificação for complexo. Além disso, requer o uso de funções lambda, o que pode ser confuso para alguns programadores. Não sugerimos usar esse método, a menos que por algum motivo você não possa usar os outros métodos deste artigo.

Com a introdução da instrução switch do Python no Python v3.10, os programadores agora têm uma maneira mais conveniente e intuitiva de controlar o fluxo de seus programas com base no valor de uma determinada variável ou expressão. Na próxima seção, exploraremos como usar uma instrução switch real em Python.

A match/case Declaração (após v3.10)

Após o Python v3.10, a instrução switch é tratada usando o match palavra-chave. Esta palavra-chave é usada para criar uma expressão de correspondência de padrões, que permite testar o valor de uma determinada variável ou expressão em relação a uma série de padrões. Se uma correspondência for encontrada, o ramo de código correspondente será executado.

Por exemplo, considere o seguinte código:

value = "foo"

match value:
    case "foo":
        print("foo was selected")
    case "bar":
        print("bar was selected")
    case _:
        print("Nothing valid was selected")

Confira nosso guia prático e prático para aprender Git, com práticas recomendadas, padrões aceitos pelo setor e folha de dicas incluída. Pare de pesquisar comandos Git no Google e realmente aprender -lo!

Neste código, estamos usando o match palavra-chave para criar uma expressão de correspondência de padrões, que testa o valor da variável value contra uma série de padrões. Se value for igual a “foo”, a primeira ramificação do código será executada. Se value for igual a “bar”, a segunda ramificação do código será executada. Caso contrário, o código do bloco else será executado.

Cair em

Uma das principais diferenças entre as instruções switch em Python e as instruções switch tradicionais em outras linguagens é que o Python match declaração não suporta falhas. Em outras palavras, uma vez encontrada uma correspondência e o ramo de código correspondente executado, o match expressão termina e nenhum outro código no match instrução é executada. Em outras línguas, isso geralmente é conseguido usando o break palavra-chave, que não é necessária ou suportada aqui.

Se você deseja obter o mesmo comportamento do fall-through em uma instrução switch tradicional, você pode usar o comando | operador para combinar vários casos. Este operador permite especificar vários padrões em um único case, e qualquer um dos padrões pode ser correspondido para acionar a execução dessa ramificação.

Por exemplo, considere o seguinte código:

value = "y"

match value:
    case "yes" | "y":
        print("The user confirmed")
    case _:
        print("The user denied")

Aqui, se o valor de value é igual a “sim” or “y”, a primeira ramificação do código será executada. Isso é equivalente ao comportamento de falha em uma instrução switch tradicional.

Padrões

Como você provavelmente notou nos exemplos acima, o caso “padrão” é tratado usando um sublinhado (_). Este é considerado o “curinga” e corresponde a todos os valores. Se um dos casos anteriores corresponder ao valor, a ramificação do código padrão será ignorada e não executada.

Conclusão

Como você pode ver, a instrução match (também conhecida como “switch”) do Python oferece uma maneira poderosa e conveniente de controlar o fluxo do seu programa. Quer você seja novo em Python ou um desenvolvedor experiente, a instrução switch pode ajudá-lo a escrever um código mais limpo e eficiente.

Carimbo de hora:

Mais de Abuso de pilha