¿Cómo implementar funciones de cambio de caso en Python? [2022]
Publicado: 2021-01-08Tabla de contenido
Introducción
¿Alguna vez te has preguntado si existe una alternativa para escribir esas complejas sentencias If-else en Python? Si no desea que varias declaraciones 'If' saturen su código, debería considerar usar la declaración Switch case que proporciona una forma más limpia y rápida de implementar el flujo de control en su código. A diferencia de C++, Java, Ruby y otros lenguajes de programación, Python no proporciona una declaración de cambio de caso, pero ofrece algunas soluciones para que esta declaración funcione.
Por ejemplo, Python le permite crear sus fragmentos de código que funcionan como declaraciones de casos de cambio de Python en los otros lenguajes de programación. Obtendrá más información sobre las formas de implementar declaraciones de cambio de caso más adelante en este blog. Si está interesado en obtener más información sobre Python, consulte nuestros cursos de ciencia de datos.
¿Qué es una instrucción Switch en Python?
En general, el interruptor es un mecanismo de control que prueba el valor almacenado en una variable y ejecuta las declaraciones de casos correspondientes. La instrucción Switch case introduce un flujo de control en su programa y asegura que su código no esté abarrotado por múltiples declaraciones 'if'.
Por lo tanto, su código parece meticuloso y transparente para los espectadores. Es una característica de programación maravillosa que los programadores usan para implementar el flujo de control en su código. La declaración de cambio de caso funciona comparando los valores especificados en las declaraciones de caso con variables en su código.
Cómo implementar la declaración de cambio de caso de Python
Si siempre ha codificado en lenguajes como C++ o Java, puede que le resulte extraño que Python no tenga una declaración de cambio de caso. En su lugar, Python ofrece numerosas soluciones como un diccionario, clases de Python o funciones lambda de Python para implementar declaraciones de cambio de caso.
Si desea saber la razón exacta por la que no tiene una declaración de cambio de caso en python, debe consultar PEP 3103 .
Antes de profundizar en estas alternativas, primero veamos cómo funciona normalmente una función de caja de interruptor en otros lenguajes de programación.
En el siguiente ejemplo, hemos utilizado el lenguaje de programación C
cambiar (mes del año) { caso 1: printf(“%s”, enero); descanso; caso 2: printf(“%s”, febrero); descanso; caso 3: printf(“%s”, marzo); descanso; caso 4: printf(“%s”, abril); descanso; caso 5: printf(“%s”, mayo); descanso; caso 6: printf(“%s”, junio); descanso; caso 7: printf(“%s”, julio); descanso; caso 8: printf(“%s”, agosto); descanso; caso 9: printf(“%s”, septiembre); descanso; caso 10: printf(“%s”, octubre); descanso; caso 11: printf(“%s”, noviembre); descanso; caso 12: printf(“%s”, diciembre); descanso; por defecto: printf(“Mes incorrecto”); descanso; } |
Ahora, profundicemos en las alternativas de función de cambio de caso de Python y comprendamos cómo funcionan estas alternativas con la ayuda de ejemplos.
Leer: Oportunidades profesionales en Python: todo lo que necesita saber
Uso de asignación de diccionario
Si está familiarizado con otros lenguajes de programación, entonces debe saber que el diccionario usa pares clave-valor para almacenar un grupo de objetos en la memoria. Cuando utiliza un diccionario como alternativa a las declaraciones de cambio de caso, las claves del par clave-valor funcionan como un caso.
El siguiente ejemplo muestra la implementación de la instrucción switch case utilizando un diccionario. Aquí, estamos definiendo una función mes() para imprimir qué mes es un mes del año.
Primero, comience creando declaraciones de casos y escriba funciones individuales para cada caso. Asegúrese de escribir una función que aborde el caso predeterminado.
def enero(): volver “enero” def febrero(): volver “febrero” definitivamente marcha(): volver "marcha" def abril(): volver "abril" def mayo(): volver "puede" definitivamente junio(): volver "junio" definitivamente julio(): volver "julio" def agosto(): volver "agosto" def septiembre(): volver “septiembre” def octubre(): volver “octubre” definitivamente noviembre(): volver "noviembre" definitivamente diciembre (): volver "diciembre" predeterminado por defecto(): devuelve "mes incorrecto" |
A continuación, cree un objeto de diccionario en Python y almacene todas las funciones que haya definido en su programa.
conmutador = { 0: 'enero', 1: 'febrero', 2: 'marcha', 3: 'abril', 4: 'puede', 5: 'junio', 6: 'julio', 7: 'agosto', 8: 'septiembre', 9: 'octubre', 10: 'noviembre', 11: 'diciembre' } |
Por último, cree una función de cambio en su programa que acepte números enteros como entrada, realice una búsqueda en el diccionario e invoque las funciones correspondientes.
def mes(mesDelAño): volver switcher.get(monthOfYear, por defecto)() |
El código completo se verá así
def enero(): volver “enero” def febrero(): volver “febrero” definitivamente marcha(): volver "marcha" def abril(): volver "abril" def puede (): volver "puede" definitivamente junio(): volver "junio" definitivamente julio(): volver "julio" def agosto(): ![]() volver "agosto" def septiembre(): volver “septiembre” def octubre(): volver “octubre” definitivamente noviembre(): volver "noviembre" definitivamente diciembre (): volver "diciembre" predeterminado por defecto(): devuelve "mes incorrecto"
conmutador = { 0: 'enero', 1: 'febrero', 2: 'marcha', 3: 'abril', 4: 'puede', 5: 'junio', 6: 'julio', 7: 'agosto', 8: 'septiembre', 9: 'octubre', 10: 'noviembre', 11: 'diciembre' } def mes(mesDelAño): volver switcher.get(monthOfYear, por defecto)() imprimir (cambiar (1)) imprimir (cambiar (0)) |
El código anterior imprime el siguiente resultado
febrero enero |
Lea también: 42 emocionantes ideas y temas de proyectos de Python para principiantes
Uso de clases de Python
También puede utilizar las clases de Python como alternativa a la implementación de sentencias de cambio de mayúsculas y minúsculas. Una clase es un constructor de objetos que tiene propiedades y métodos. Entendamos esto más a fondo con la ayuda del mismo ejemplo anterior. Aquí, definiremos un método de cambio dentro de una clase de cambio de Python.
Ejemplo
Primero, definiremos un método de cambio dentro de una clase de cambio de Python que toma un mes del año como argumento y convierte el resultado en una cadena.
clase PythonSwitch: def mes(self, mesDel Año): predeterminado = "Mes incorrecto" return getattr(self, 'case_' + str(monthOf Year), lambda: default)() |
Nota: En el ejemplo anterior, hemos usado dos cosas: la palabra clave lambda y el 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.
Ahora, cree funciones individuales para cada caso.
def enero (uno mismo): volver “enero”
def febrero (uno mismo): volver “febrero” def march(self): volver "marzo"
def abril (auto): volver "abril"
def puede (uno mismo): volver "mayo"
def junio (uno mismo): volver "junio" def julio (auto): volver "julio"
def agosto (uno mismo): volver "agosto"
def septiembre (auto): volver “septiembre” def octubre (auto): volver “octubre”
def noviembre (auto): volver "noviembre"
def diciembre (auto): volver "diciembre" |
El código completo se verá así
clase PythonSwitch: def mes(self, mesDel Año): predeterminado = "Mes incorrecto" return getattr(self, 'case_' + str(monthOf Year), lambda: default)() def enero (uno mismo): volver “enero”
def febrero (uno mismo): volver “febrero”
def march(self): volver "marzo"
def abril (auto): volver "abril"
def puede (uno mismo): volver "mayo"
def junio (uno mismo): volver "junio" def julio (auto): volver "julio"
def agosto (uno mismo): volver "agosto"
def septiembre (auto): volver “septiembre” def octubre (auto): volver “octubre”
def noviembre (auto): volver "noviembre"
def diciembre (auto): volver "diciembre" my_switch = PythonSwitch() imprimir (mi_cambio.mes(1)) imprimir (mi_cambio.mes(10)) |
El código anterior imprime el siguiente resultado
enero octubre |
Echa un vistazo: Salario de desarrollador de Python en India
Conclusión
En este blog, ha aprendido acerca de las declaraciones de cambio de caso, cuáles son las alternativas de las declaraciones de cambio de caso y cómo usarlas. Como se explicó anteriormente, Python no tiene una función de cambio de caso incorporada, pero siempre puede usar estas alternativas para que su código se vea limpio y ordenado y obtenga un mejor rendimiento.
Si tiene curiosidad por aprender sobre ciencia de datos, consulte el Programa ejecutivo PG en ciencia de datos de IIIT-B y upGrad, creado para profesionales que trabajan y ofrece más de 10 estudios de casos y proyectos, talleres prácticos, tutoría con expertos de la industria, 1 -on-1 con mentores de la industria, más de 400 horas de aprendizaje y asistencia laboral con las mejores empresas.
Diferenciar entre un diccionario ordinario y un diccionario de Python.
Python Dictionary o "Dict" es una estructura de datos incorporada de Python que se utiliza para almacenar una colección desordenada de elementos. A diferencia de otras estructuras de datos de Python que almacenan valores únicos, la estructura de datos del diccionario almacena pares clave-valor donde cada clave es única. No recuerda el orden de inserción de los pares clave-valor e itera a través de las claves. Por otro lado, un Diccionario ordenado u OrderedDict realiza un seguimiento del orden de inserción de los pares clave-valor. También consume más memoria que un diccionario regular en Python debido a su implementación de lista doblemente enlazada. Si elimina y vuelve a insertar la misma clave, se insertará en su posición original ya que OrderedDict recuerda el orden de inserción.
¿Qué operaciones de namedtuple hacen que sea una opción conveniente para usar en casos de cambio?
La tupla con nombre en Python realiza varias operaciones. La siguiente es una lista de algunas de las operaciones más comunes realizadas por la tupla nombrada. Se puede acceder a los elementos en una tupla con nombre por sus índices, a diferencia de un diccionario. La forma alternativa de acceder a los elementos es por su nombre clave. La función make() devuelve una tupla con nombre. La función _asadict() devuelve un diccionario ordenado que se construye a partir de los valores asignados. La función _replace() toma un nombre de clave como argumento y cambia los valores asignados a él. La función _fileds() devuelve todos los nombres clave de la tupla con nombre dada.
¿Cuándo preferimos listas para almacenar datos?
La lista de Python se considera la mejor estructura de datos para almacenar los datos en los siguientes escenarios: se puede usar una lista para almacenar varios valores con diferentes tipos de datos y se puede acceder a ella solo por sus índices respectivos. Cuando necesite realizar operaciones matemáticas sobre los elementos, se puede utilizar una lista, ya que le permite operar matemáticamente los elementos directamente. Dado que se puede cambiar el tamaño de una lista, se puede usar para almacenar los datos cuando no está seguro de la cantidad de elementos que se almacenarán. Los elementos de la lista son fácilmente modificables y también pueden almacenar elementos duplicados, a diferencia del conjunto y el diccionario.