众所周知,Python简单易用,好上手,十分适合各种开发,同时更适合非IT人士进行简单开发,和程序员交流。但是也有起局限性:
缺点:
1.代码不能加密
因为PYTHON是解释性语言,它的源码都是以明文形式存放的,不过我不认为这算是一个缺点,如果你的项目要求源代码必须是加密的,那你一开始就不应该用Python来去实现。
2. 多线程支持不好
3.Python慢
Python相对C语言确实慢很多,但其实这里所指的速度慢在大多数时候我们是无法感知的,比如说,是用C语言程序开发了一个程序,执行需要花0.01秒,使用Python实现同样功能的程序,需要花0.1秒
的时间,虽然相差10倍,但是我们基本是感知不到的。更多的时候,程序慢是程序员实现功能方式导致的。就好像开罐头的时候,有的人用牙咬,有的人用工具,这样两个人的效率相比起来就差了很多。
今天我们就用和大家分享一下Python的C拓展,让它也可以有C的速度
1. 环境准备
如果是Linux只需要安装Python3.x + Python-dev。
Windows下稍微复杂点,VS2017 + Python3.6.3
VS2017可用社区版,需要选择安装的环境如下:
2. Hello World !
2.1 C模块封装
以计算两个数相加为例,选择任意文件夹,新建如下C语言源码:
其中,静态函数 calc_add 以python的C接口方式封装了add函数,命名方式 模块名_函数名
静态PyMethodDef列表 变量 CalcMethods 包含了该模块方法的描述
静态struct PyModuleDef结构体 变量 calcmodule 定义了模块的描述
PyInit_calc 函数初始化了模块,命名方式 PyInit_模块名
2.2 C源码编译
在VS2017中可以直接生成 .dll 文件,然后改名为 .pyd 就可在python程序中引入该模块了,但是,这不"清真",正确的姿势是写一个 setup.py然后通过python调cl.exe编译。
新建 setup.py文件,内容如下:
然后,从Windows的命令行(命令提示符)下进入到这个文件夹下,执行:
python setup.py build
即可完成编译,如果出现某
.bat
文件未找到,说明你的VS没有安装相应的依赖(Linux下编译不成功原因可能是没有装python-dev),按文章开头给出的依赖库添加修改(此时不需要重新安装VS)。
编译结束后,在该文件夹下会出现build文件夹,进入该文件夹,出现如下两个文件夹:
进入lib.xxx那个文件夹,里面有个.pyd结尾的文件(Linux下为.so结尾),这就是我们编译好的python模块了,如下:
当然,你也可以改名为calc.pyd比较好看,不过这不影响调用。
2.3 Python调用
这部分就简单了,进入含有编译好的.pyd文件夹,新建如下文件:
这就是一个普通库,这样调用就OK了。
3. Python的参数传递以及C的返回值相关问题
这部分我直接甩出文件就行,编译及调用过程与上面一样。
C 文件
如果你选择了自学,我想给你提几点建议:
1.找浅显易懂,例程比较好的教程,从头到尾看下去。不要看很多本,专注于一本。把里面的例程都手打一遍,搞懂为什
么。
2.去找实际项目练手。最好是要有真实的项目做。可以找几个同学一起做个网站之类。注意,真实项目不一定非要是商业
项目。
3.最好能找到一个已经会python的人。问他一点学习规划的建议,然后在遇到卡壳的地方找他指点。这样会事半功倍。
4.另外,除了学习编程语言,也兼顾补一点计算机基础,和英语。
5.不但要学写代码,还要学会看代码,更要会调试代码。读懂你自己程序的报错信息。再去找些github上的程序,读懂别
人的代码。
6.学会查文档,用好搜索引擎和开发者社区。
就是以上这些,希望你能有所收获。
领取专属 10元无门槛券
私享最新 技术干货