将 Python 函数返回值传递给 Go
本文解决了从 Go 程序中调用 Python 函数并访问其返回值的问题价值。遇到的场景涉及调用外部文件中定义的 Python 函数并检索其返回数据以在 Go 中进一步处理。
在提供的示例中,Go 程序尝试使用 exec.Command 执行 Python 命令,但是无法收到任何返回数据。最初的理论是返回值被打印出来,而不是由 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')") fmt.Println(cmd.Args) out, err := cmd.CombinedOutput() if err != nil { fmt.Println(err); } fmt.Println(string(out)) }
关键的修改是删除 Python 命令周围的引号。这允许执行正确的命令并捕获返回值。
以上是如何正确地将Python函数返回值传递给Go?的详细内容。更多信息请关注PHP中文网其他相关文章!