Heim > Backend-Entwicklung > Golang > Wie kann ich erfolgreich Rückgabewerte von einer Python-Funktion abrufen, die von einem Go-Programm aufgerufen wird?

Wie kann ich erfolgreich Rückgabewerte von einer Python-Funktion abrufen, die von einem Go-Programm aufgerufen wird?

Linda Hamilton
Freigeben: 2024-11-28 15:31:11
Original
1053 Leute haben es durchsucht

How Can I Successfully Retrieve Return Values from a Python Function Called by a Go Program?

Python-Funktionen von Go aus aufrufen und Rückgabewerte abrufen

Eine häufige Aufgabe bei der Arbeit mit mehreren Sprachen in einem Projekt ist die Möglichkeit, Funktionen aus einer Sprache innerhalb einer anderen aufzurufen. In diesem Fall untersuchen wir, wie man eine Python-Funktion aus einem Go-Programm aufruft und ihren Rückgabewert abruft.

Ursprünglicher Versuch und Problem

In einem ersten Versuch war der folgende Go-Code verwendet:

package main

import (
    "fmt"
    "os/exec"
)

func main() {
    cmd := exec.Command("python", "-c", fmt.Sprintf("'import pythonfile; print pythonfile.cat_strings(\"%s\", \"%s\")'", "foo", "bar"))
    out, err := cmd.CombinedOutput()
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Println(string(out))
}
Nach dem Login kopieren

Bei diesem Ansatz trat jedoch ein Problem auf, bei dem der Rückgabewert der Python-Funktion nicht im Go-Programm erfasst wurde. Die Ausgabe zeigte eine leere Zeichenfolge, „ “.

Problemanalyse

Das Problem entstand aufgrund der Formatierung des Python-Befehls. Die Anführungszeichen, die den Befehl selbst umgaben, führten dazu, dass der Python-Interpreter den Befehl als einzelne Zeichenfolge statt als Liste von Argumenten behandelte.

Lösung

Um das Problem zu beheben, wurden die Anführungszeichen um den Befehl herum verwendet ENTFERNT. Der folgende Go-Code demonstriert die Lösung:

package main

import (
    "fmt"
    "os/exec"
)

func main() {
    cmd := exec.Command("python", "-c", "import pythonfile; print pythonfile.cat_strings('foo', 'bar')")
    out, err := cmd.CombinedOutput()
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Println(string(out))
}
Nach dem Login kopieren

Durch das Entfernen der Anführungszeichen wird der Befehl nun wie vorgesehen ausgeführt und der Rückgabewert der Python-Funktion kann ordnungsgemäß im Go-Programm erfasst werden.

Das obige ist der detaillierte Inhalt vonWie kann ich erfolgreich Rückgabewerte von einer Python-Funktion abrufen, die von einem Go-Programm aufgerufen wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage