Sono un "neofita di Python" e sto cercando di cogliere i meccanismi interni del tipo di dati del dizionario. La scorsa notte stavo tentando di usarne uno come struttura di controllo (vale a dire l'istruzione switch) per l'input da tastiera su un programma openGL.Python: utilizzo di un dizionario come interruttore non funzionante
Il problema era che per qualche motivo il dizionario continuava a valutare TUTTI i casi (due in questo caso) anziché solo quello dal tasto premuto.
Ecco un pezzo esempio di codice:
def keyboard(key):
values = {
110: discoMode(),
27: exit()
}
values.get(key, default)()
ho passato un'ora o più scorsa notte cercando di trovare la risposta al perché ogni 'caso' viene valutata, ho un paio di idee, ma non è stato in grado di trovare chiaramente la risposta alla domanda "perché".
Quindi, qualcuno dovrebbe essere così gentile da spiegarmi perché quando premo il tasto 'n' (la rappresentazione ascii è 110) che questo pezzo di codice valuta anche la voce sotto 27 (il tasto ESC)?
Scusa se questo argomento è stato picchiato a morte ma ho guardato e non sono riuscito a trovare facilmente la risposta chiara (forse l'ho perso).
Grazie.
Ed essere sicuri che il valore per 'default' è anche un oggetto funzione (cioè, che la chiamata' default() 'è legale e fa qualcosa di sensato.) –