首頁 > 後端開發 > Golang > 如何成功取得Go程式呼叫的Python函數的回傳值?

如何成功取得Go程式呼叫的Python函數的回傳值?

Linda Hamilton
發布: 2024-11-28 15:31:11
原創
1051 人瀏覽過

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

從Go 呼叫Python 函數並檢索回傳值

在專案中使用多種語言時的一個常見任務是能夠在另一種語言中呼叫一種語言的函數。在本例中,我們正在探索如何從 Go 程式呼叫 Python 函數並檢索其傳回值。

原始嘗試和問題

在最初的嘗試中,以下Go 程式碼是使用:

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))
}
登入後複製

但是,這種方法遇到了一個問題,即Go 程式中未捕獲Python 函數的回傳值。輸出顯示一個空字串“”。

問題分析

問題是由於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))
}
登入後複製

透過刪除引號,命令現在可以按預期執行,並且可以在 Go 程式中正確捕獲 Python 函數的傳回值。

以上是如何成功取得Go程式呼叫的Python函數的回傳值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板