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
python的简单程序代码_有那些用python修改python程序代码的简单方法?相关推荐
- python3经典小程序代码_一个可以套路别人的python小程序实例代码
python可以开发什么?谁有python小程序的源代码,...桌面程序,web都可以,还有比如现在讲的多的人工智能,神经网络源码可以去找一些开源代码,搜索一下,蛮多的. 分享python小程序代码练 ...
- php代码里怎么写html代码_菜鸟青铜变白银!Python 项目代码写完了,然后怎么打包和发布?...
你把你的代码写完了,是不是要给别人使用下,怎么打包你的项目代码呢?喂,开源么?接下来小帅b就跟你说说,如何打包你的代码.就拿我们上次演示的 todo为例,写完代码之后,代码的目录是这样的: 在 tod ...
- python第一行代码_“少年py”001:下载Python软件,写第一行代码
Python,网络上称之为人工智能时代的第一编程语言. 功能超级强大,能做科学计算.大数据处理.网络爬虫.游戏开发等等. 但是说实话,彬哥玩Python还没到这么厉害的程度,究竟怎么实现,我们不着急, ...
- python命令窗口在哪里_详解如何在cmd命令窗口中搭建简单的python开发环境
详解如何在cmd命令窗口中搭建简单的python开发环境 1.快捷键win+r输入cmd回车调出cmd界面,在命令行输入python回车,显示python命令无法识别 2.登陆python官网http ...
- python文件批量重命名_文件批量重命名的python代码
我们下载大量文件,或者拍摄大量照片.视频之后,或许会有一些人想要给它们重命名,以使文件们看起来更整洁一些. 用python是可以轻松解决的,而且只需要用几行代码.这对于程序员是一件很简单不过的事了,但 ...
- 浪漫的python代码_七夕,最浪漫的Python代码送给陷入爱河的Python男同胞
七夕,最浪漫的Python代码送给陷入爱河的Python男同胞 image.gif 三句话情书,我们听过.如何用python写一段浪漫的代码?可以是简短有韵味的情书式, 也欢迎冗长而效果拔群的万行 ...
- 单片机c语言必背代码_【典藏】深度剖析单片机程序的运行(C程序版)
1.日常聊一聊 今天为大家带来一篇对于单片机学习的小伙伴非常重量级的一篇文章<深度剖析单片机程序的运行(C语言版本)>,该文章会比较全面的为大家解析我们的用C语言编译出来的程序是如何在单片 ...
- python功能代码_整理几个常用的Python功能代码片段【收藏】
随机数生成 >>> import random #导入Python内置的随机模块 >>> num = random.randint(1,1000) #生成1-1 ...
- 如何把python文件发给别人没_如何把自己写的python程序给别人用
这里讲的给别人用,不是指将你的代码开源,也不是指给另一个程序员用..... 前段时间写了个程序,输入URP学生系统的账号和密码,输出课表.绩点之类的信息,想给同学用,但是总不能叫别人也去装python ...
- lombok 生成代码_使用Project Lombok减少Java应用程序中的样板代码
lombok 生成代码 对Java编程语言最常提出的批评之一是它需要大量的样板代码 . 对于简单的类尤其如此,该类只需要存储一些值就可以. 您需要这些值的getter和setter方法,也许您还需要一 ...
最新文章
- 教程:7、管道和过滤器
- “上海名媛群”事件,我来说几句
- 零基础python入门书籍-浅谈零基础自学python入门书
- Spherical Harmonics Lighting的代码实现(基于OpenGL)
- c语言求佩尔方程的解设计思路,c语言版 佩尔方程求最小正整数解及第k解(矩阵快速幂)...
- short 用equals_Java Short类equals()方法的示例
- 内联函数 error LNK2001: unresolved external symbol
- ssm radis mysql_SSM完美整合Redis
- 03 验证合法性连接的客户端
- opencv 解决ippicv下载失败问题ippicv_2019_lnx_intel64_general_20180723.tgz离线下载
- 人群与网络:万维网结构、链接分析与网络搜索
- Fiddler抓包工具之详细使用步骤(超详细)
- 富文本点击事件-TTTAttributedLabel和YYtext的不同用法
- 微型四轴飞行器(3)嵌入式软件设计
- 大数据开发工程师招聘要求高吗?
- 【转】为什么火线有电压,零线没有电压呢
- openwrt 配置过程
- 否则 JavaFX 应用程序类必须扩展javafx.application.Application
- 粗谈全息投影与裸眼3D
- 一个由两个长的如此相像的字引起的问题
热门文章
- 如何在命令行下运行kettle的作业(job)和转换(transform)
- 9-16 原生命令和redis-trib.rb对比
- 进程的切换和系统的一般执行过程
- matlab实验报告的总结,matlab实验报告
- linux设备驱动 注册 命令6,Linux设备驱动调试
- python迭代_Python迭代
- coco 数据集_Tensorflow对COCO目标检测数据预处理
- 计算机信息系统安全保卫工作,对计算机信息系统安全保护工作的检查
- java小程序之学生信息_java小程序之学生信息录入界面
- java+jquery实现长轮询案例_网页实时聊天之js和jQuery实现ajax长轮询