Jestem "neofitą pytona" i próbuję uchwycić wewnętrzne działanie słownika danych. Ostatniej nocy próbowałem użyć jednego jako struktury kontrolnej (tzn. Instrukcji switch) do wprowadzania klawiatury w programie OpenGL.Python: Używanie słownika jako przełącznika nie działa
Problem to, że z jakiegoś powodu słownik ciągle oceniał WSZYSTKIE przypadki (dwa w tym przypadku) zamiast tylko jednego z wciśniętego klawisza.
Oto przykładowy fragment kodu:
def keyboard(key):
values = {
110: discoMode(),
27: exit()
}
values.get(key, default)()
spędziłem godzinę lub więcej ostatnią noc próbując znaleźć odpowiedź, dlaczego każdy „przypadek” jest oceniany, mam kilka pomysłów, ale nie był w stanie jednoznacznie znaleźć odpowiedzi na pytanie "dlaczego".
Czy ktoś byłby na tyle uprzejmy, aby wyjaśnić mi, dlaczego po naciśnięciu klawisza "n" (reprezentacja ASCII to 110), ten fragment kodu również ocenia wpis poniżej 27 (klawisz ESC)?
Przepraszam, jeśli ten temat został pobity na śmierć, ale wyglądałem i nie mogłem łatwo znaleźć jasnej odpowiedzi (może tęskniłem za tym).
Dziękuję.
I upewnij się, że wartość 'default' jest również obiektem funkcji (to znaczy, że wywołanie' default() 'jest legalne i robi coś sensownego). –