Go 语言编写 CPython 扩展:goPy

jopen 6年前

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]]

项目主页:http://www.open-open.com/lib/view/home/1365407188937