Ich führe einen kleinen Client-Server-Test in Python und der Client sendet ein Wort an den Server. Dieses Wort ist der Name einer Funktion in Python, die aufgerufen werden muss. Wenn also das Wort "Blinken" gesendet wird, sollte es die Funktion "Blinken" aufrufen. (Bitte beachten Sie, dass es sich dabei um mehrere Schlüsselwörter und Funktionen handeln könnte, so dass es sich um eine Form von Variablenfunktionsaufrufen handeln muss).Wie benutze ich eine Variable als Funktionsname zum Aufruf von Python
while True:
s.listen(1)
conn, addr = s.accept()
print 'Connection address:', addr
while 1:
data = conn.recv(BUFFER_SIZE)
if not data: break
if data == "blink":
print "MATCH!"
call(data())
print "received:",data
call(data())
print "break"
Das Wort MATCH wird gedruckt, um das Wort eindeutig zu erhalten. Wie benutze ich jetzt die variablen Daten, um die Funktion blinkend aufzurufen?
ich jetzt
TypeError: 'str' object is not callable
ich den Fehler verstehen kann .. klar muss ich etwas mit dieser Zeichenfolge tun .. irgendwelche Ideen?
'data()', Sie versuchen, ein String-Objekt zu nennen. Vielleicht meinst du 'call (data)'? –
Sie könnten eval oder exec verwenden, um dies zu tun. Siehe http://stackoverflow.com/questions/2220699/whats-the-difference-between-eval-exec-and-compile-in-python – Dan
@Dan Nein. Nein Nein Nein. Bitte verwenden Sie nicht 'eval' oder' exec'. –