dsp*_*pjm 42 c python linux compiler-construction
我知道Python提供了一个API,所以你可以用C代码调用Python解释器,但我想要的是相反的.
我的程序需要使用一些C API,所以代码必须用C编写.但我也想用Python打包程序.这意味着我想在Python中调用那些C函数或可执行文件.那可能吗?
如果我希望C代码是一个库,这意味着我在Python中使用它#include
并且*.o
可能与它联系起来,该怎么做?那可能吗?如果我将C代码写入可执行文件,这意味着它成为一个命令,我可以直接在Python中调用它吗?
另外,我听说可以编译Python代码,这是否意味着我们可以在没有源文件的情况下执行代码?输出文件是二进制文件吗?它会提高性能吗?
Jac*_*rto 80
我想在python中调用那些C函数或可执行文件.那可能吗.
是的,您可以编写可以作为模块导入Python的C代码.Python称这些扩展模块.您可以直接从Python调用它,这是文档中的一个示例:
Python代码
import example
result = example.do_something()
Run Code Online (Sandbox Code Playgroud)
C代码
static PyObject * example(PyObject *self)
{
// do something
return Py_BuildValue("i", result);
}
Run Code Online (Sandbox Code Playgroud)
如果我希望C代码是一个库,这意味着我将它与#include一起使用并且可能在python中使用*.o的链接,如何做或者是可能的.
您将其构建为共享库*.dll或*.so 您还可以调查使用distutils来分发您的模块.
如果我将C代码写入可执行文件,这意味着它成为一个命令,我可以直接在python中调用它吗?
如果你编写一个*.exe,那么你正在做相反的事情(从C调用Python).您选择的方法(exe与共享库)取决于您是否需要"带有某些Python的C程序"或"带有某些C的Python程序".
另外,我听说python代码可以编译,这是否意味着我们可以在没有源文件的情况下执行代码?输出文件是二进制文件吗?它会提高性能吗?
Python读取*.py文件并在运行时编译为*.pyc 字节码文件.然后,字节码在Python虚拟机中运行.这意味着"第二次执行相同的文件会更快,因为可以避免从源代码重新编译到字节码." (来自Python词汇表)因此,如果您尚未编辑*.py文件,它将运行*.pyc.您可以在不使用*.py文件的情况下分发*.pyc文件,但它们不会加密并且可以进行反向工程.
归档时间: |
|
查看次数: |
61037 次 |
最近记录: |