Maneje con elegancia ramas condicionales en Python: mapeo de diccionario, combinación de funciones y declaraciones de coincidencia de casos

En este artículo, exploramos cómo manejar correctamente las ramas condicionales en Python para evitar el uso de demasiadas declaraciones if. El artículo presenta dos soluciones: mapeo de diccionario y combinación de funciones, y la declaración match-case introducida en Python 3.10. Estos métodos hacen que la estructura del código sea más clara, concisa y más fácil de mantener y ampliar.

1. Antecedentes

Como lenguaje de programación elegante, Python proporciona muchos métodos concisos y eficientes para abordar diversos problemas. Sin embargo, antes de Python 3.10, no había declaraciones integradas switchen Python, lo que podría confundir a algunos programadores. En esta publicación de blog, cubriremos cómo manejar iflas ramas condicionales con elegancia sin usar muchas declaraciones, incluido el mapeo de diccionarios, la composición de funciones y match-caselas declaraciones introducidas en Python 3.10.

2. Casos problemáticos

eventSupongamos que necesitamos procesar datos JSON y ejecutar una lógica de código diferente según los campos del JSON . Por ejemplo, queremos controlar el movimiento de una pequeña tortuga en ROS:

{
    
    
    "info": "运动备注",
    "device": "turtle",
    "event": "stop"
}

Los tipos de eventos incluyen: avanzar, retroceder, detenerse, girar a la izquierda, girar a la derecha.

3. Opción 1: asignación de diccionario y combinación de funciones

Para lograr una bifurcación condicional elegante, podemos utilizar el mapeo de diccionario y la composición de funciones de Python. Primero, definimos funciones correspondientes para diferentes tipos de eventos.

def forward():
    print("前进")

def backward():
    print("后退")

def stop():
    print("停止")

def left():
    print("左转")

def right():
    print("右转")

A continuación, utilizamos un diccionario para asignar tipos de eventos a las funciones correspondientes.

event_mapping = {
    
    
    "forward": forward,
    "backward": backward,
    "stop": stop,
    "left": left,
    "right": right
}

De esta manera, cuando necesitamos ejecutar una lógica de código diferente según el tipo de evento, solo necesitamos encontrar la función correspondiente a través del mapeo del diccionario y ejecutarla.

import json

json_str = '''
{
    "info": "运动备注",
    "device": "turtle",
    "event": "stop"
}
'''

json_data = json.loads(json_str)
event = json_data["event"]
event_mapping[event]()

La ventaja de este método es que la estructura del código es clara y fácil de mantener. Cuando necesite agregar una nueva lógica de procesamiento de eventos, simplemente defina una nueva función y agregue la entrada correspondiente en el mapa del diccionario. Además, este enfoque es muy escalable y se pueden agregar fácilmente más ramas condicionales según sea necesario.

4. Opción 2: declaración de caso coincidente

A partir de Python 3.10, Python introduce una nueva estructura: match-casela declaración, que es similar a las declaraciones en otros lenguajes de programación switch. Podemos usar match-casedeclaraciones para implementar ramas condicionales elegantes.

Usando match-casedeclaraciones, podemos reescribir el ejemplo anterior como:

import json  

def handle_event(event: str):  
    match event:  
        case "forward":  
            print("前进")  
        case "backward":  
            print("后退")  
        case "stop":  
            print("停止")  
        case "left":  
            print("左转")  
        case "right":  
            print("右转") 
        case _:  
            print("未知事件")  

json_str = '''  
{  
    "info": "运动备注",  
    "device": "turtle",  
    "event": "stop"  
}  
'''  
   
json_data = json.loads(json_str)  
event = json_data["event"]  
handle_event(event)  

Ventajas y escalabilidad

match-caseLas declaraciones tienen las siguientes ventajas:

  • La estructura del código es clara y fácil de mantener.
  • Evite utilizar una gran cantidad de ifdeclaraciones para que el código sea más conciso.
  • Admite la coincidencia de patrones y puede manejar ramas condicionales más complejas.

5. Finalmente

Al utilizar mapeo de diccionario, combinaciones de funciones o match-casedeclaraciones, podemos manejar ramas condicionales con elegancia en Python y evitar el uso de una gran cantidad de ifdeclaraciones. Estos métodos no sólo hacen que el código sea más limpio, sino también más fácil de mantener y ampliar. ¡Espero que esta publicación de blog sea útil en su viaje de programación en Python!

Supongo que te gusta

Origin blog.csdn.net/marin1993/article/details/132850513
Recomendado
Clasificación