ホームページ > バックエンド開発 > Golang > Go プログラムによって呼び出された Python 関数から戻り値を正常に取得するにはどうすればよいですか?

Go プログラムによって呼び出された Python 関数から戻り値を正常に取得するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-11-28 15:31:11
オリジナル
997 人が閲覧しました

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

Go からの Python 関数の呼び出しと戻り値の取得

プロジェクトで複数の言語を使用する場合の一般的なタスクの 1 つは、ある言語から別の言語内で関数を呼び出す機能です。この場合、Go プログラムから Python 関数を呼び出し、その戻り値を取得する方法を検討しています。

元の試みと問題

最初の試みでは、次の Go コードは次のとおりでした。 used:

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))
}
ログイン後にコピー

ただし、このアプローチでは、Python 関数からの戻り値が Go プログラムでキャプチャされないという問題が発生しました。出力には空の文字列 " " が表示されました。

問題分析

問題は、Python コマンドの形式が原因で発生しました。コマンド自体を引用符で囲んでいるため、Python インタープリターはコマンドを引数のリストではなく単一の文字列として扱っていました。

解決策

この問題を解決するには、コマンドを引用符で囲みました。削除されました。次の Go コードは、解決策を示しています。

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))
}
ログイン後にコピー

引用符を削除すると、コマンドが意図したとおりに実行され、Python 関数からの戻り値を Go プログラムで適切にキャプチャできるようになります。

以上がGo プログラムによって呼び出された Python 関数から戻り値を正常に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート