Passer les valeurs de retour d'une fonction Python à Go
Cet article aborde le problème de l'appel d'une fonction Python à partir d'un programme Go et de l'accès à son retour valeur. Le scénario rencontré consiste à appeler une fonction Python définie dans un fichier externe et à récupérer ses données de retour pour un traitement ultérieur dans Go.
Dans l'exemple fourni, un programme Go tente d'exécuter une commande Python à l'aide de exec.Command, mais ne parvient pas à recevoir de données de retour. Une première théorie est que la valeur de retour est imprimée au lieu d'être renvoyée par la fonction Python. Cependant, cela est rejeté car cela violerait l'hypothèse selon laquelle la fonction fait partie d'un module utilitaire Python plus grand.
Après une enquête plus approfondie, il s'avère que le problème réside dans la construction de la commande Python. En supprimant le guillemet autour de la commande elle-même, le code de travail suivant est obtenu :
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)) }
La modification clé est la suppression du guillemet autour de la commande Python. Cela permet d'exécuter la commande correcte et de capturer la valeur de retour.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!