我知道Python提供了一个API,所以你可以在C代码中调用Python解释器,但我想要的是相反的。
我的程序需要使用一些C API,所以代码必须用C编写。但我也想用Python打包程序。这意味着我想在 Python 中调用那些 C 函数或可执行文件。那可能吗?
如果我希望 C 代码成为一个库,这意味着我将它与#include
和的联系*.o
可能在Python中,该怎么做?那可能吗?如果我将C代码写入可执行文件,这意味着它变成了命令,我可以直接在Python中调用它吗?
另外,我听说Python代码可以编译,这是否意味着我们可以在没有源文件的情况下执行代码?输出文件是二进制文件吗?它会提高性能吗?
我想在 python 中调用那些 C 函数或可执行文件。那可能吗。
是的,您可以编写可以作为模块导入到 Python 中的 C 代码。 Python 称这些为扩展模块。您可以直接从 Python 调用它,示例来自文档 http://docs.python.org/2/extending/extending.html:
Python代码
import example
result = example.do_something()
C Code
static PyObject * example(PyObject *self)
{
// do something
return Py_BuildValue("i", result);
}
如果我希望 C 代码成为一个库,这意味着我将它与 #include 和 python 中可能的 *.o 链接一起使用,如何做到或者是否可能。
您将其构建为共享库*.dll or *.so您还可以研究使用 distutils 来分发您的模块。
如果我将C代码写入可执行文件,这意味着它变成了命令,我可以直接在python中调用它吗?
如果你写一个*.exe那么你正在做相反的事情(调用来自 C 的 Python http://docs.python.org/2/c-api/)。您选择的方法(exe 与共享库)取决于您是否想要“带有一些 Python 的 C 程序” or a “带有一些 C 语言的 Python 程序”.
另外,我听说python代码可以编译,这是否意味着我们可以在没有源文件的情况下执行代码?输出文件是二进制文件吗?它会提高性能吗?
Python读取*.py文件并编译为*.pyc bytecode运行时的文件。然后字节码在 Python 虚拟机中运行。这意味着“第二次执行同一文件的速度更快,因为可以避免从源代码到字节码的重新编译。”(来自 Python 术语表)所以如果你还没有编辑你的*.py文件,它将运行*.pyc。您可以分发*.pyc文件没有*.py文件,但它们未加密并且可以进行逆向工程。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)