python简单程序代码-有那些用python修改python程序代码的简单方法?

python源代码是用C写的。

想改源库用python实现好像不太现实。

按你的要求,用C来extend的话很简单。

============下面是扩展库的代码===========

用C来extend源库的办法,也就是题主想修改module的办法:

step1、先要写python的wrapper,什么是wrapper?熟悉java自动装拆箱机制的应该都知道,这里不解释,作用与其类似。

比如我要在python的“二货”库中添加一个“逗逼()”方法,逗逼()的功能就是求最大公约数,这里我贴上最大公约数的实现算法以及wrapper代码:

int 逗逼(int x, int y) {

int g;

g = y;

while (x > 0) {

g = x;

y = y % x;

y = g;

}

return g;

}

wrapper:

#include "python.h"

extern int 逗逼(int, int);

/* wrapper for 逗逼 */

static PyObject *

py_逗逼(PyObject *self, PyObject *args) {

int x,y,g;

/* 获取变量 */

if (!PyArg_ParseTuple(args,"ii",&x,&y)) {

return NULL;

}

/* 调用逗逼函数 */

g = 逗逼(x,y);

/* 返回逗逼结果 */

return Py_BuildValue("i",g);

}

注:PyObject类型是python所有类的元类型,也就是所有的实例类型都是元类型的一个对象,有兴趣的可以自己撸一遍python源代码。我看过好久了,这里可能记得不准确,抽空撸撸再更正。

step2、把你写的这个外部逗逼方法打包进二货库

/* Module ’二货’

#include "python.h"

extern int 逗逼(int, int);

/* wrapper for 逗逼 */

static PyObject *

py_逗逼(PyObject *self, PyObject *args) {

}

/* 方法列表 */

static PyMethodDef 二货methods[] = {

{"逗逼", py_逗逼, METH_VARARGS},

{ NULL, NULL}

};

/* 二货库初始化 */

void init二货() {

Py_InitModule("二货",二货methods);

}

注:逗逼和二货在实际中一定要用英文。为了易读性可能会误导大家。

step3、编译你刚刚更新的库

在终端进行如下操作,建立一个启动文件,命名为“setup”。

*shared*

二货 逗逼.c 二货module.c

% cp /usr/local/lib/python2.7.4/config/Makefile.pre.in .

敲以下命令

% make -f Makefile.pre.in boot

% make

到这一步就可以为二货库创造出一个公有的逗逼方法。

注:路径要以操作系统以及安装位置为准。

即使是这样的操作也不能百分之百保证源代码的正确更改以及调用的成功性。

现在你可以引入二货,感受一下逗逼的酸爽了。

import 二货

>>>二货.逗逼(11,13)

>>>1

Mission Completed

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值