Soy un 'neófito de pitón' y trato de entender el funcionamiento interno del tipo de datos del diccionario. Anoche intenté usar uno como estructura de control (es decir, declaración de cambio) para la entrada del teclado en un programa OpenGL.Python: Usar un diccionario como interruptor no funciona
El problema fue que por alguna razón el diccionario siguió evaluando TODOS los casos (dos en este caso) en lugar de solo el de la tecla presionada.
Aquí es una pieza de código de ejemplo:
def keyboard(key):
values = {
110: discoMode(),
27: exit()
}
values.get(key, default)()
pasé una hora o más ayer por la noche tratando de encontrar la respuesta a por qué se evalúa cada 'caso', Tengo algunas ideas, pero no fue capaz de encontrar claramente la respuesta a la pregunta "por qué".
Entonces, ¿alguien sería tan amable de explicarme por qué cuando presiono la tecla 'n' (la representación ascii es 110) que este fragmento de código también evalúa la entrada debajo de 27 (la tecla ESC)?
Disculpe si este tema ha sido golpeado hasta la muerte pero lo miré y no pude encontrar la respuesta clara fácilmente (quizás me lo perdí).
Gracias.
Y asegúrese de que el valor para 'default' sea también un objeto de función (es decir, que llamar' default() 'es legal y hace algo sensible.) –