2016 - 2024

感恩一路有你

python3.6.3编写一个简单程序 Python如何嵌入C/C 进行开发?

浏览量:1200 时间:2023-06-01 15:45:28 作者:采采

Python如何嵌入C/C 进行开发?

要是要在Python中包装2个装甲旅的C或C功能,则有很多选择是可以要做。一个比较简单是,我们是可以试着手动裸芯片尝试下如何用Python导进C/C并且开发。

自动整体封装假如您要包装的C/C代码低些相对多,则是可以手动能完成。文档的“储存和嵌入”部分是两个非常好的参考。

当我为C和C代码编写包装器时,大多数会为代码提供一个过程接口,然后再不使用Python构造一个面向对象的接口。我那样的话做是只是因为两个原因:首先,将C对象不会暴露给Python很麻烦;如果你是,我更不喜欢用Pythonc语言程序高层结构,而不是用C汇编语言它们。

让我们看一个基本上的包装器:文件“hello.c”中有一个函数“hi~”。“hi~”的定义如下:

char*嗨小伙伴们(char*what)要不自动封装方法,我们是需要先执行以下操作。

首先,编译程序一个Python可调用函数,该函数认可一个字符串并直接返回一个字符串。

或者,在模块的符号表中注册一此函数(所有Python函数都必然于模块中,就算它们虽然是C函数也这般!)

第三,为模块c语言设计一个初始化函数(所有扩展模块都不需要一个系统初始化函数)。

第四,编写一个脚本:

况且在此简单级别上,此代码也有两个方面愿意讨论。

错误处理请尽量PyArg_ParseTuple内部函数。该动态创建告知Python,“hello!”包装函数正好采用一个参数,即字符串(“s”来表示“字符串”;“ss”它表示“两个字符串”;“si”来表示“字符串和整数”))。CAPI与Python的约定是,从回PyObject*的函数回NULL意思是已突然;在情况下,出现错误信息是在PyArg_ParseTuple中系统设置的,我们只是因为按照返回NULL在堆栈上讯息传递错误。

直接引用数器Python在直接引用定时计数系统上工作好:突然之间一个函数“拥有”一个对象的所有权(比如,将其怎么分配给列表或字典),它都会可以使用Py_INCREF使该对象的摘录计数寄存器减少1。当将该对象从该特定的事件位置删除(.例如,从列表或字典中删出)时,直接引用计数寄存器将使用Py_DECREF会减少。当引用计数提升0时,Python会清楚该对象未被任何对象可以使用,因此也可以施放该对象(不过,可能会不会立玄能量它)。

我想知道为什么这么说有用?好吧,我们正在用PyString_FromString在此代码中创建角色一个PyObject。我们是需要INCREF吗?要得出答案答案,请查找PyString_FromString的文档:

#l2h-461看见了哪里写着“新参考”?这意味着它将取走直接引用计数法为1的对象,这就是我们想的。如果不是它说“凭借的脚注”,这样的话我们不需要在返回对象之前先对对象参与INCREF,以因为我们如果能分配的内存还能够在函数结束后再未知。

这是一种考虑到摘录的方法:

如果您从PythonAPI收到消息Python对象,则也可以在自己的C代码中建议使用它,而不必增加它的引用。

如果您想绝对的保证Python对象这个可以在您自己的C代码末尾保留过来,则必须INCREF。

如果您从Python代码收到消息一个对象,并且它是一个新脚注,只不过您不希望它在您自己的C代码末尾可以生存过来,则应该对它并且DECREF。

顺便说一句,如果您想前往None,则可以不不使用Py_None。记住要INCREF!

一个注意事项:我讲到了建议使用PyCObjects传信不透明的C/C数据类型。假如您使用Python来组织代码,不过这具高不不需要访问网络Python的古怪结构,则这很有用吗。

您可以不将指针包装在PyCObjects中(如果没有要,也可以使用关联的析构函数),此时它们不变不透明的Python对象,其内存由Python解释什么器管理

。这个可以在示例代码看见一个例子,下code/hello,hello/hellmodule.c,函数cobj_in,cobj_土爆以及free_loving_struct,它通过不使用PyCObject包装的分配的C结构又回到Python。

总结

所以,这是麻烦问下怎么自动裸芯片Python的简短精悍介绍。但,您可能会会猜到,有许多项目一类作用于自动出现整体封装代码。所以我半自动裸芯片接触下用Python导进C/C参与开发,其他的大家是可以搜索看看,也很好带的是SWIG、pyrex和ctypes的等。

怎么用sublimetext编写并运行python程序?怎么设置?

1.

可以打开sublimetext3,然后把新建一个Python文件。

2.

新建任务Python文件后,再点击sublimetext软件顶部的【文件】,在弹出来的选项中点击【需要保存】

3.

后再然后点击sublimetext菜单栏的【Tool】选项,在弹出对话框的选项中然后点击【编译系统】,在二级菜单中选择类型【Python】编译语言就可以了。假如您要不运行其他的语言,您是可以让其可以修改。

4.

再点击sublimetext菜单栏的【Tool】选项,在弹出对话框的饿选项中直接点击【立刻编译程序】就可以了。

Python 函数 代码 对象

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。