C / C ++模块与python模块。

时间:2016-11-05 20:07:36

标签: python

在Python(CPython)中我们可以导入模块: import module和模块可以只是*.py文件(带有python代码),或者模块可以是用C / C ++编写的模块(可以扩展python)。因此,这样的模块只是编译的目标文件(如Unix上的*.so / *.o)。

我想知道解释器是如何执行的。

我认为python模块被编译为字节码然后它将被解释。在C / C ++的情况下,只执行来自这种模块的模块功能。所以,跳转到地址并开始执行。

如果我错了请纠正我/请说明。

1 个答案:

答案 0 :(得分:3)

当你导入一个C扩展时,python使用平台的共享库加载器来加载库,然后,如你所说,跳转到库中的一个函数。但是你不能只加载任何库或以这种方式跳转到任何函数。它仅适用于专门用于支持python的库以及由库作为python对象导出的函数。 lib必须理解python对象并使用这些对象进行通信。

或者,您可以使用像ctypes之类的外部函数库来加载库并将数据转换为数据的C视图以进行调用,而不是导入。