Python C API 使用心得

本文作者分享了使用Python C API编写扩展模块和在C语言中调用Python语句的心得,包括如何创建C语言函数供Python调用,以及如何在C代码中执行Python语句和模块。文中还提到工作中快速应用所学Python知识的体会。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.youkuaiyun.com/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

Python C API 使用心得

write by 九天雁翎(JTianLing) -- blog.youkuaiyun.com/vagrxie

 

工作的变化简直和人生变化一样不可预知.就在反外挂刚开始的时候,天天看的都是汇编和一大堆只有cracker(或想称为cracker)的人才会看的破解相关书籍,但是才过了几天,准备做被动的反外挂系统后,工作基本上就转到了用Python C API来写扩展模块和用Python来写Check程序了,真是突然。

8月份看完《Programming in LUA》以后,对脚本语言重拾兴趣,后来断断续续也算把《Python核心编程》,这本来是非常纯粹的Just for fun的事情,最后确还是免不了染上工作的性质,呵呵,这样说好像很奇怪,应该是说,凭借着一点兴趣,花了很多业余时间去学习的Python, 想不到竟然能这么快就在工作中有所应用与发挥,实话说,做老板的,肯定希望有这样的员工。。。。。何况,在老板心中我还算是新员工呢。我要是老板,我也希望做一个新东西前,本来说要调研调研的。。。。结果已经有员工用业余时间已经做过了,然后可以直接开工,唉。。。。我不知道碰到这样的情况我为什么会叹 气。。。。。。。

 

其实以前学的主要是Python语言的语法,用Python C API来写扩展模块还真没有写过,要是用LUA的话,虽然特别复杂,但是可能好歹还有个底。最后几乎是纯粹靠文档来解决了一切,(还有老总提供的一些没头没尾的例子)不要问我为什么不上网查,资料太少,而且在公司上网并不方便。

这里总结一下,以防忘记(我并不准备详细记录下每个步骤,仅仅记要点,假如需要详细步骤的,请参看Python document中的例子)

一:用C APIPythonC语言函数,以方便Python中调用,这种方法还是很简单的,和LUA C API的方法基本一样。(参看文档的Extending Python with C or C++部分)

1.  首先实现一个特定原型的函数,用Python C API来实现的话,所有函数必须是这种原型。必须是类似这样的

PyObject *Fun(PyObject *self, PyObject *args)

self应该是在用类的时候才会用到(我没有用到),args就是函数的参数。因为args是一个PyObject*类型(可以代表Python语言中的任何类型)

2.      将参数转换成C 语言表示的内容,用PyArg_ParseTuple函数。

3.      执行完需要的操作后,也必须返回一个PyObject*类型的值。通过Py_BuildValue函数来构建。

这里要说的是,假如希望返回一个Tuple类型的值,可以先用

PyObject *tuple = Py_BuildValue("(iis)", 1, 2, "three");

形式来构建,假如很多的话,可以用下面的方式来构建

PyObject *t;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值