Seite 1 von 1

Funktionen als Werte in einem dict

Verfasst: Mittwoch 23. August 2017, 10:10
von Natrix natrix
Hallo,

als Ersatz für den Switch-Case Befehl möchte ich ein dict nutzen, um verschiedene Codeblöcke aufzurufen (ich nenne das Konstrukt dispatcher).
Leider verhält sich der dispatcher nicht wie gewünscht. Er übergibt zwar artig strings wenn er soll, ruft aber keine Funktionen auf.

Was muss ich machen, damit die Funktionen aufgrufen werden.

Danke für Eure Hife.
VG
NN

Code: Alles auswählen

def eins():
    print("eins")
    
def zwei():
    print("zwei")

dispatcher = {1 : eins, 
              2 : zwei,
              3 : "drei",
              4 : "vier" }

eingabe = int(input("Bitte geben Sie einen Wert ein: "))
dispatcher.get(eingabe, 'default')

Re: Funktionen als Werte in einem dict

Verfasst: Mittwoch 23. August 2017, 10:18
von BlackJack
@Natrix natrix: Nun dazu musst Du die Funktionen *aufrufen*:

Code: Alles auswählen

dispatcher.get(eingabe, 'default')()
Wobei das dann natürlich bei den Werten für 3 und 4, sowie bei 'default' ein Problem ist, denn Zeichenketten kann man nicht aufrufen:

Code: Alles auswählen

In [7]: 'default'()
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-7-2bbe1ad68b62> in <module>()
----> 1 'default'()

TypeError: 'str' object is not callable

Re: Funktionen als Werte in einem dict

Verfasst: Mittwoch 23. August 2017, 10:45
von Natrix natrix
Hallo Blackjack,

danke. Kleine Klammer, große Wirkung. Der Aufruf... natürlich. :oops:
Die Strings kommen ohnehin weg, waren nur Platzhalter.

VG
NN