Implementando funciones Switch Case en Python

Una declaración de cambio de caso introduce un flujo de control en nuestro programa y garantiza que nuestro código no esté abarrotado de múltiples declaraciones ‘if’.

En ese caso, la instrucción Switch-case es una característica de programación más rápida y poderosa que les permite controlar el flujo de su programa en función del valor de una variable o expresión. Pueden usarlo para ejecutar diferentes bloques de código, según el valor de la variable en tiempo de ejecución. En general, un interruptor es un mecanismo de control que prueba el valor almacenado en una variable y ejecuta las declaraciones de casos correspondientes.

Por lo tanto, nuestro código parece detallado y transparente para el espectador. Es una gran característica del programa que
los programadores utilizan para implementar el flujo de control en su código. Una declaración de cambio de caso funciona comparando el
valores especificados en las sentencias case con variables en nuestro código.

En este artículo, veremos cómo podemos implementar las funciones de cambio de caso en los lenguajes de programación Python. A diferencia de otros lenguajes de programación como Java, C++, Python no tiene una función de cambio de mayúsculas y minúsculas. Junto con esto, veremos cómo trabajar una ruta de escape para las funciones de cambio de caso de python. Discutamos las diversas implementaciones para las funciones de caso de cambio de Python.

Python no tiene un simple cambio de mayúsculas y minúsculas. Viniendo de un entorno de Java o C++, esto podría ser un poco diferente, porque Java y C++ tienen una declaración de cambio incorporada. Aquí nos sorprendería saber que el lenguaje Python no tiene una. Y para esto podemos tener la tentación de usar una serie de bloques if-else, usando una condición if para cada instancia de su instrucción switch. Sin embargo, debido a la tabla de saltos, una declaración de cambio es mucho más rápida que una escalera si-si. En lugar de evaluar cada condición secuencialmente, solo necesita buscar la variable/expresión evaluada una vez y saltar directamente a la rama de código adecuada para ejecutarla.

Podemos entenderlo claramente tomando ejemplos de cómo se puede usar en C++ y Java, así en C++ o Java usamos las funciones de la caja del interruptor:

Así es como funciona:

  • El compilador genera una tabla de salto para la declaración de cambio de caso
  • La variable/expresión de cambio se evalúa una vez
  • Un conmutador busca la variable/expresión evaluada en la tabla de salto y determina exactamente qué bloque de código ejecutar.
  • Si no se encuentra ninguna coincidencia, se ejecuta el código del escenario predeterminado.

En el ejemplo anterior, según el valor de la variable mes, se mostrará un mensaje diferente en la salida estándar. En este caso, a partir de mes=8, se imprimirá ‘agosto’ en el estándar.

Resuelva su función Python Switch-Case:

Asignación de diccionario:

Como sabemos que Python no tiene una declaración de cambio de caso simple aquí, una salida es implementar otra escalera. En cambio, podemos usar un diccionario para mapear instancias de acuerdo con su funcionalidad, esta forma Pythonic de implementar una declaración de cambio usará el poderoso asignaciones de diccionario. Si alguien está familiarizado con otros lenguajes de programación, debe saber que el diccionario usa pares clave-valor para almacenar un grupo de objetos en la memoria. Cuando usamos un diccionario en lugar de declaraciones de cambio de caso, las claves del valor clave actúan como un caso.

Aquí está la implementación de Python de las funciones de cambio de caso. En este ejemplo, creamos un diccionario llamado conmutador para almacenar las instancias similares a conmutadores.

Aquí, en este ejemplo, cuando pasamos un argumento a la función switch_demo, se compara con la asignación del diccionario del conmutador. Si se encuentra una coincidencia, se imprime el valor asociado o se imprime una cadena predeterminada («Mes no válido»). La cadena predeterminada ayuda a implementar el ‘caso predeterminado’ de las declaraciones de cambio.

Un conmutador es un diccionario que hace este mapeo..

Como podemos ver, se imprime «Mes no válido» para valores distintos al que especificamos en el interruptor. Esto se debe a que le decimos que lo haga usando el método get() del diccionario.

Mapeo de diccionario usando funciones de Python:

Aquí lo encontramos más interesante. Los valores del diccionario de Python pueden ser de cualquier tipo de datos. Así que no tenemos que limitarnos a usar constantes (enteros, cadenas), también podemos usar nombres de funciones y lambdas como valores.

Por ejemplo, también podemos implementar la declaración de cambio anterior creando un diccionario de nombres de funciones como valores. Usar esto para implementar una declaración de cambio de caso de Python es simple. Tenemos que seguir algunos pasos para ello.

  • Primero, defina funciones individuales para cada escenario.
  • Asegúrese de que haya una función/método para manejar el caso predeterminado.
  • A continuación, cree un objeto de diccionario y almacene cada una de las funciones comenzando con el índice 0.
  • A continuación, escriba una función switch() que acepte números hasta meses como argumentos.
  • El switch() llama al método get() en el objeto del diccionario que devuelve la función que coincide con el argumento y la invoca simultáneamente.

En este caso, switcher es un diccionario de nombres de funciones y no cadenas.

Mapeo de diccionario usando clases de Python:

También podemos usar las clases de Python como otra forma de implementar sentencias de cambio de mayúsculas y minúsculas. Una clase es un constructor de objetos con propiedades y métodos. Entendamos esto más con la ayuda del mismo ejemplo anterior. Es bastante fácil usar una clase para implementar una declaración de cambio de caso de Python. Hagámoslo con el ejemplo.

Según el argumento pasado, la función getattr() integrada recuperará métodos de objeto con el nombre dado. En el ejemplo anterior, estamos usando dos cosas: una palabra clave lambda y un método getattr().

  • Usamos la palabra clave lambda para definir una función anónima en Python. La palabra clave Lambda invoca la función predeterminada cuando un usuario ingresa una entrada no válida.
  • El método getattr() se usa para invocar una función en Python.

Ventajas del enfoque pythonico:

Dado que podemos cambiar los diccionarios de Python en tiempo de ejecución (agregar, eliminar o actualizar pares clave-valor), podemos cambiar fácilmente cada declaración de cambio sobre la marcha. Aquí hay un ejemplo:

Conclusión

Un caso de cambio es una construcción de programación muy útil que no solo proporciona un mejor rendimiento que una declaración if-else, sino que también hace que nuestro código sea más manejable. En este artículo, hemos aprendido acerca de las funciones de cambio de caso, después de lo cual discutimos cuáles son las alternativas a estas funciones de cambio de caso y cómo usarlas.

Entonces, como se explicó anteriormente, llegamos a la conclusión de que Python ni siquiera tiene una función de cambio de mayúsculas y minúsculas incorporada, pero siempre podemos usar estas alternativas (como usar el mapeo de diccionario en lugar de cambiar de mayúsculas y minúsculas) para implementar a nuestra manera. Aquí vimos dos tipos de implementación en Python, primero usamos el mapeo de diccionario para implementar el cambio con funciones y luego implementamos el cambio usando la clase, por lo que con esta alternativa hacemos que nuestro código se vea limpio y ordenado y obtengamos un mejor rendimiento.

👉 Necesitas mas tutoriales de python ? aqui los tienes.

3 comentarios en «Implementando funciones Switch Case en Python»

  1. ¡Creo que usar un diccionario en lugar de un switch es genial! ¿Qué opinan ustedes?

  2. ¿Por qué no usar un enfoque más sencillo con if-elif-else en Python? ¡Menos código!

  3. ¿Por qué no usar un enfoque más sencillo con if-elif-else en Python?

Los comentarios están cerrados.