Übergabe von Python-Funktionsrückgabewerten an Go
Dieser Artikel befasst sich mit dem Problem des Aufrufs einer Python-Funktion aus einem Go-Programm und des Zugriffs auf deren Rückgabe Wert. Das angetroffene Szenario beinhaltet den Aufruf einer in einer externen Datei definierten Python-Funktion und das Abrufen ihrer Rückgabedaten zur weiteren Verarbeitung in Go.
Im bereitgestellten Beispiel versucht ein Go-Programm, einen Python-Befehl mit exec.Command auszuführen, aber Es werden keine Rückgabedaten empfangen. Eine erste Theorie besagt, dass der Rückgabewert gedruckt wird, anstatt von der Python-Funktion zurückgegeben zu werden. Dies wird jedoch verworfen, da es gegen die Annahme verstoßen würde, dass die Funktion Teil eines größeren Python-Dienstprogrammmoduls ist.
Bei weiteren Untersuchungen wurde festgestellt, dass das Problem in der Konstruktion des Python-Befehls liegt. Durch Entfernen des umschließenden Anführungszeichens um den Befehl selbst wird der folgende Arbeitscode erhalten:
Go-Code:
package main import ( "fmt" "os/exec" ) func main() { cmd := exec.Command("python", "-c", "import pythonfile; print pythonfile.cat_strings('foo', 'bar')") fmt.Println(cmd.Args) out, err := cmd.CombinedOutput() if err != nil { fmt.Println(err); } fmt.Println(string(out)) }
Die wichtigste Änderung ist das Entfernen des Anführungszeichens um den Python-Befehl. Dadurch kann der richtige Befehl ausgeführt und der Rückgabewert erfasst werden.
Das obige ist der detaillierte Inhalt vonWie übergebe ich die Rückgabewerte einer Python-Funktion ordnungsgemäß an Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!