Ich bin mit einem relativ komplexen Programm interagieren und setzen Sie eine GUI, um Befehle zu erteilen. Ich habe ein einfaches Beispiel erfunden, von dem ich denke, dass es das Problem zeigt. Ich weiß, welche Parameter übergeben werden müssen, um einen Befehl auszugeben, aber ich kann sie nur als Zeichenfolgen erhalten.Python: Wie kann ich eine Variable an eine Funktion mit nur dem String-Namen
Es gibt Hunderte von Befehlen mit unterschiedlichen Rückgabewerte, die ich dynamisch, aber dies ist ein Beispiel dafür, was ich kann zurückkommen, wenn ich einen Befehl ID
def get_command_vars(commandID = None):
if commandID == '0x4F':
return [['mode', '16bits'], ['seconds', '8bits']]
def issueMyCommand(commandID = None):
commandParameters = get_command_vars(command=0x4F)
commandParameters passieren sagt mir, dass die Parameter für diesen Befehl sind Modus und Sekunden, aber sie sind Strings
commandParm_1 = commandParameters[0][0] # 'mode'
commandParm_2 = commandParameters[1][0] # 'seconds'
>get User Input from the gui to pass to issuetheCommand
input1 = getinputEntry1() # this is the 'mode' value, e.g., 8
input2 = getinputEntry2() # this is the 'seconds' value, e.g., 14
Ich habe die Werte aus der Benutzereingabe passieren, aber ich weiß nicht, wie sie an die Funktion zu übergeben, da ich die Variablen als Strings, ie'mode nur haben‘und‚Sekunden‘
c = issueTheCommand(mode = input1, seconds = input2)
dieses Befehlsformat wird auf den Parameter-Typen von get_command_vars Basis ändern, könnte es so ‚count‘, ‚datalength‘, ‚Millisekunden Verzögerung ', usw.
@sberry sein - tatsächlich der Benutzer Eingabewerte werden mit Modus und Sekunden übergeben. die 16 Bit und 8 Bit kommen hier nicht wirklich zum Tragen. Ich versuche dies zu tun, ohne das Format zu ändern, das die Funktion "issueTheCommand" erwartet, wenn möglich. die Art, wie ich es jetzt ausstelle, sieht so aus: c = issueTheCommand (Modus = 8, Sekunden = 14). Ich glaube nicht, dass es ein Diktat braucht.
Nur damit ich verstehe, möchten Sie 'issueTheCommand' mit benannten Parametern aufrufen, ja? Sie könnten also am Ende 'issueTheCommand (mode = '16bits', seconds = '8bits')' '? – sberry