Seite 1 von 1
Funktionen aus Liste aufrufen
Verfasst: Sonntag 15. Mai 2016, 17:42
von xa13
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.
Re: Funktionen aus Liste aufrufen
Verfasst: Sonntag 15. Mai 2016, 17:53
von 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()