Funktionen aus Liste aufrufen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
xa13
User
Beiträge: 1
Registriert: Sonntag 15. Mai 2016, 17:07

Code: Alles auswählen

While True:
	if received[:4]==“hiya”:
		Answer(“Hi”)
	elif received[:7]==“restart” or received[:6]==“reboot”:
		Restart()
	elif “disk” in received:
		Disk()
	elif “hot” in received:
		Temp()
	elif “refresh” in received: 
		Refresh()
	else: 
		Answer(“Eh?”)
received ist eine Nachricht von einem anderen PC. Jetzt soll eine Funktion aufgerufen werden.
Ich suche jetzt eine Möglichkeit wie ich dass besser lösen kann ?
Am besten über eine Liste damit ich dass ganze etwas begrenzen kann.
BlackJack

@xa13: Die Daten sind zu unregelmässig. Wenn die regelmässiger aufgebaut wären, zum Beispiel das erste durch ein Leerzeichen vom Rest getrennte ”Wort” ist das Kommando, dann könnte man einfach ein Wörterbuch erstellen, welches Kommandos auf Funktionen abbildet:

Code: Alles auswählen

from functools import partial

# ...

    command_name2func = {
        'hiya': partial(answer('Hi')),
        'restart': restart,
        'reboot': reboot,
        'disk': disk,
        'hot': temp,
        'refresh': refresh,
    }
    for received in receiver:
        command_name, _, _arguments = received.parition(' ')
        try:
            command = command_name2func[command_name]
        except KeyError:
            answer('Eh?')
        else:
            command()
Antworten