I haben eine Funktion, die den Verschluss auf einer Kamera festlegt und nimmt einen Schwimmer als Eingabe:Schlüsselfehler, wenn kein Wörterbuch erforderlich ist
def changeShutter(value):
global camera, shutter
shutter['abs_value']+=value
try:
camera.set_property(**shutter)
except:
print "could not set shutter"
wo shutter
ein Wörterbuch alle Eigenschaften für den Verschluß erforderliche enthält, ist, und abs_value
ist der Schlüssel, dessen Wert geändert und dann festgelegt werden muss.
Ich kann dies leicht genug in einem Jupyter Notebook nennen, das ich für die Entwicklung mit changeShutter(0.05)
verwende und es funktioniert gut.
Ich habe dann eine einfache html-Taste auf einer Webseite erstellt, die eine Nachricht an einen Flask-Socket-Server mit der changeShutter-Funktion sendet und abhängig von der gedrückten Taste und der so gesendeten Nachricht 0,05 oder -0,05 wie unten analysiert :
@socketio.on('shutter request', namespace='/test')
def changeShutter(message):
request = message['data']
print 'Shutter request received: %s' %request
if str(request) == "shutter increase":
changeShutter(0.05)
elif str(request) == "shutter decrease":
changeShutter(-0.05)
ich mich an einen key error: 0.05
aus irgendeinem Grund wirft es klar wird eine der zwei möglichen Optionen und korrekt die richtige if
Anweisung eingeben (I-Debugging mit zusätzlichen Druckanweisungen versucht haben), aber.
Wenn die Funktion keine Wörterbucheingabe benötigt, warum bekomme ich einen Schlüsselfehler?
Warum heißt Ihre Flaschenfunktion 'changeShutter'? 'changeShutter (0.05)' ruft am Ende 'changeShutter (message)' und damit keyerror auf. – Dheerendra
Perfekt. Habe das gerade bemerkt und versucht, die Antwort einzureichen, nur um zu finden, dass du es auch gefunden hast. Tausend Dank! – Fonty
Verwenden Sie Namespacing. Verwenden Sie keine Globals. Ihr Programmierstil ist das Problem. Was erwarten Sie, wenn Sie zwei Funktionen mit exakt demselben Namen definieren? –