我想在Python中调用一些C函数或可执行文件,这个可以实现吗?
是的,可以编写C代码作为模块导入到Python中。Python称其为扩展模块。您可以直接从Python中调用它,以下是一个来自文档的例子:
Python 代码
import example
result = example.do_something()
C 代码
static PyObject * example(PyObject *self)
{
return Py_BuildValue("i", result);
}
如果我想将C代码作为库使用,也就是我在Python中使用#include和*.o文件链接,怎么做或者是否可以实现。
你需要将其构建为共享库*.dll或*.so。你也可以研究使用distutils来分发你的模块。
如果我将C代码写成可执行文件,也就是变成一个命令,我能直接在Python中调用它吗?
如果你编写了*.exe,则是相反的操作(调用
Python from C)。你选择的方法(exe vs shared library)取决于你是想要一个“带有一些Python的C程序”还是一个“带有一些C的Python程序”。
另外,我听说Python代码可以被编译,这是否意味着我们可以在没有源文件的情况下执行代码?输出文件是二进制文件吗?这会提高性能吗?
Python会读取
*.py文件并在运行时编译为
*.pyc的
字节码文件。然后,该字节码将在Python虚拟机中运行。这意味着
“执行相同的文件第二次更快,因为可以避免从源代码重新编译为字节码”(来自Python词汇表)。因此,如果您没有编辑过
*.py文件,则会运行
*.pyc文件。您可以分发
*.pyc文件而无需
*.py文件,但是它们不是加密的,可以被反向工程。