python一个函数调用另一个函数的返回值_从Go调用Python函数并获取函数返回值

我正在编写Go程序。从这个Go程序中,我想调用另一个文件中定义的Python函数并接收该函数的返回值,以便可以在Go程序的后续处理中使用它。我在将所有返回的数据恢复到我的Go程序时遇到了麻烦。以下是我认为可行的最低示例,但显然无效:

gofile.go

package main

import "os/exec"

import "fmt"

func main() {

fmt.Println("here we go...")

program := "python"

arg0 := "-c"

arg1 := fmt.Sprintf("'import pythonfile; print pythonfile.cat_strings(\"%s\", \"%s\")'", "foo", "bar")

cmd := exec.Command(program, arg0, arg1)

fmt.Println("command args:", cmd.Args)

out, err := cmd.CombinedOutput()

if err != nil {

fmt.Println("Concatenation failed with error:", err.Error())

return

}

fmt.Println("concatentation length: ", len(out))

fmt.Println("concatenation: ", string(out))

fmt.Println("...done")

}

pythonfile.py

def cat_strings(a, b):

return a + b

如果我打电话,go run gofile我得到以下输出:

here we go...

command args: [python -c 'import pythonfile; print pythonfile.cat_strings("foo", "bar")']

concatentation length: 0

concatenation:

...done

一些注意事项:

我-c在Python调用中使用该标志,因此可以cat_strings直接调用该函数。假定cat_strings是Python文件的一部分,该文件包含其他Python程序使用的实用程序功能,因此为什么我没有任何if __name__ == __main__生意。

我不想将Python文件修改为print a + b(而不是return a + b);参见关于该函数属于一组实用程序函数的一部分的先前要点,这些实用函数应该由其他Python代码调用。

该cat_strings功能是虚构的,用于演示目的;真正的功能是我不想简单地在Go中重新实现的功能。我真的对如何从Go调用Python函数并获取返回值感兴趣。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值