La declaración de cambio de Python

Introducción

La declaración de cambio es una herramienta poderosa y conveniente para controlar el flujo de su programa. Le permite crear rápida y fácilmente múltiples ramas de código, dependiendo del valor de una variable o expresión determinada. Se usa comúnmente cuando necesita ejecutar una lógica diferente según el valor de una variable determinada, que puede tener más de 2 (pero un número finito) de valores.

En este artículo, exploraremos cómo usar la declaración switch en Python y discutiremos sus ventajas sobre otras estructuras de control. Ya sea que sea nuevo en Python o un desarrollador experimentado, la declaración de cambio puede ayudarlo a escribir código más limpio y eficiente.

Antes de v3.10

Antes de que la declaración de cambio de Python estuviera disponible de forma nativa en el lenguaje, los programadores tenían que usar otras estructuras de control para lograr la misma funcionalidad. Un enfoque común era utilizar una serie de declaraciones if-else, asociando cada rama de código con un valor diferente de la variable que se estaba probando.

Por ejemplo, considere el siguiente código:

value = "foo"

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

En este código, estamos usando una declaración if-else para determinar qué rama de código ejecutar en función del valor de la variable. value. Si value es igual a "foo", se ejecutará la primera rama del código. Si value es igual a “barra”, se ejecutará la segunda rama del código. De lo contrario, el código en el else se ejecutará el bloque.

Si bien este enfoque funciona, rápidamente puede volverse difícil de manejar a medida que aumenta el número de valores posibles para la variable. Además, puede dificultar la lectura y comprensión del código.

Otro enfoque que se puede utilizar para crear una declaración similar a un interruptor en Python es utilizar un diccionario. En este enfoque, las claves del diccionario son los posibles valores de la variable que se está probando y los valores son las ramas de código correspondientes.

Por ejemplo, considere el siguiente 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")()

En este código, hemos definido un diccionario llamado switch, con claves que representan los posibles valores de la variable. value. Para cada clave, hemos asignado una función lambda como valor, que contiene la rama de código correspondiente. Para ejecutar la rama de código apropiada, utilizamos el get() Método del diccionario, que nos permite especificar un valor predeterminado para usar si la clave dada no existe en el diccionario.

Si bien este enfoque es más flexible y compacto que usar declaraciones if-else, aún puede resultar difícil de leer y comprender, especialmente si el código de cada rama es complejo. Además, requiere el uso de funciones lambda, lo que puede resultar confuso para algunos programadores. No sugerimos utilizar este método a menos que por alguna razón no pueda utilizar los otros métodos de este artículo.

Con la introducción de la declaración de cambio de Python en Python v3.10, los programadores ahora tienen una forma más conveniente e intuitiva de controlar el flujo de sus programas en función del valor de una variable o expresión determinada. En la siguiente sección, exploraremos cómo usar una declaración de cambio real en Python.

La match/case Declaración (después de v3.10)

Después de Python v3.10, la declaración de cambio se maneja usando el match palabra clave. Esta palabra clave se utiliza para crear una expresión de coincidencia de patrones, que le permite probar el valor de una variable o expresión determinada frente a una serie de patrones. Si se encuentra una coincidencia, se ejecuta la rama de código correspondiente.

Por ejemplo, considere el siguiente código:

value = "foo"

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

Consulte nuestra guía práctica y práctica para aprender Git, con las mejores prácticas, los estándares aceptados por la industria y la hoja de trucos incluida. Deja de buscar en Google los comandos de Git y, de hecho, aprenden ella!

En este código, estamos usando el match palabra clave para crear una expresión de coincidencia de patrones, que prueba el valor de la variable value contra una serie de patrones. Si value es igual a "foo", se ejecutará la primera rama del código. Si value es igual a “barra”, se ejecutará la segunda rama del código. De lo contrario, se ejecutará el código del bloque else.

Caer a través

Una de las diferencias clave entre las declaraciones de cambio en Python y las declaraciones de cambio tradicionales en otros lenguajes es que Python match La declaración no admite la caída. En otras palabras, una vez que se encuentra una coincidencia y se ejecuta la rama de código correspondiente, el match La expresión termina y no hay ningún otro código en el match se ejecuta la declaración. En otros idiomas, esto generalmente se logra usando el break palabra clave, que no es necesaria ni compatible aquí.

Si desea lograr el mismo comportamiento que el fallo en una declaración de cambio tradicional, puede usar el | operador para hacer coincidir múltiples casos. Este operador le permite especificar múltiples patrones en un solo case, y cualquiera de los patrones puede coincidir para desencadenar la ejecución de esa rama.

Por ejemplo, considere el siguiente código:

value = "y"

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

Aquí, si el valor de value es igual a "sí" or “y”, se ejecutará la primera rama del código. Esto es equivalente al comportamiento fallido en una declaración de cambio tradicional.

predeterminados

Como probablemente habrás notado en los ejemplos anteriores, el caso "predeterminado" se maneja usando un guión bajo (_). Esto se considera el "comodín" y coincide con todos los valores. Si uno de los casos anteriores coincide con el valor, entonces la rama del código predeterminado se omite y no se ejecuta.

Conclusión

Como puede ver, la declaración de coincidencia de Python (también conocida como "cambio") ofrece una manera poderosa y conveniente de controlar el flujo de su programa. Ya sea que sea nuevo en Python o un desarrollador experimentado, la declaración de cambio puede ayudarlo a escribir código más limpio y eficiente.

Sello de tiempo:

Mas de Abuso de pila