Go 语言编写 CPython 扩展:goPy
jopen
11年前
goPy 是一个新的开源项目,实现了用 Go 语言来编写 CPython 扩展。
CPython是用C语言实现的Python解释器,也是官方的并且是最广泛使用的Python解释器。除了CPython以外,还有用JAVA实现的Jython和用.NET实现的IronPython,使Python方便地和JAVA程序、.NET程序集成。另外还有一些实验性的Python解释器比如PyPy。
CPython是使用字节码的解释器,任何程序源代码在执行之前先要编译成字节码。它还有和几种其它语言(包括C语言)交互的外部函数接口。
示例代码:
package simple import ( "fmt" "gopy" ) func example(args *py.Tuple) (py.Object, error) { fmt.Printf("simple.example: %v\n", args) py.None.Incref() return py.None, nil } func init() { methods := []py.Method{ {"example", example, "example function"}, } _, err := py.InitModule("simple", methods) if err != nil { panic(err) } }编译方法:
> gopy pymodule.go使用方法:
import simple simple.example("hello", {123: True})输出结果:
simple.example: [hello map[123:true]]