Python适合写算法和数据结构实现吗?_用python写算法怎么样

当你使用Python语句实现某个排序算法,该算法实现本身在语义上增加了多余的代码语句,CPython解释器在编译对应的Python语句时会额外生成多余的字节码指令。那么执行纯Python代码实现的算法与会比CPython调用其C底层实现相同算法实现要慢成百个甚至上千倍都不止。CPython内置的查找、排序这些算法本来就是C实现的。本来很轻松的一个C调用就能解决的问题。非的用CPython去绕一大圈来解决同一个问题。这不是蛋疼是什么!

另外,CPython的虚拟机执行指令是非常低效的,其CPython函数调用执行纯粹是基于CPython构建的栈帧对象执行,一条指令少则2-3次入栈/出栈操作,多则4-5次。其次CPython的虚拟机实现无法像C/C++程序那样 充分利用x86_64架构多余的物理寄存器缓存多个内部变量,因此无法减少其函数栈的时间开销。

选择一门开发语言学习算法和数据结构,更不应该使用CPython之类的解析语言,学习算法实现的其中一个重要阶段是算法/数据结构的效能测试,也就是在检测一个算法在不同阶段,测试代码执行该算法/数据结构返回的时间开销和空间开销,以判断你的算法实现上下文中找出性能瓶颈的代码,用一个纯CPython实现的算法或数据结构,从CPython的内存管理和其底层的执行机制来说,CPython返回和其他更低层静态语言实现相同算法(或数据结构)相比,返回更大偏差的参考数据,这样的效能测试得到结果毫无参考意义可言,这样对于算法学习者是一种严重的误导。对于熟悉C、C++的开发者并且稍微阅读过CPython实现源代码都能悟出的一个基本共识–CPython不适合用于算法和数据结构实现!!

因此,答主打心底里极端BS那些拿Python来商业炒作,收割韭菜的行为。

Python更适合调用C/C++底层实现的各种算法接口,并不适合作为算法实现。那肯定有人问,**我想用类似Python的语法去写算法和数据结构,有什么方法吗?**Python软件生态,有众多的第三方Python替补方案。

  • 基于Java实现的Jython解释器。
  • 基于.Net实现的IronPython解释器
  • 能和CPython交互或直接取代CPython,更优化的第三方实现PyPy、Numba、Cython。这些技术本源就是编译器,将Python代码不同程度地降级为机器码运行,被编译的部分尽可能绕过CPython内部的类型检查和低效的内存垃圾管理。

PyPy即是完全谋求取代CPython解释器的Python实现,而且它几乎可以无缝和Cython扩展交互。笔者在实际Python和C的混编程中,更多地选择它。PyPy目前已经解决了绝大部分常用Cython扩展的调用和模拟Python C/API低效和兼容性的问题。

PyPy源代码使用了符合RPython语法限制的Python语言实现的,那会有人跟我杆以下这个问题。

最后

为了帮助大家更好的学习Python,小编给大家准备了一份Python学习资料,里面的内容都是适合零基础小白的笔记和资料,不懂编程也能听懂、看懂,需要获取方式:扫描下方即可获取。

👉Python学习路线汇总

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

👉Python必备开发工具👈

👉精品Python学习书籍👈

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

温馨提示:篇幅有限,已打包文件夹,获取方式:点击这里【 Python全套资料】 或扫描下方即可获取。

👉Python学习视频600合集👈

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

​​​

👉100道Python练习题👈

​​​

👉面试刷题👈

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、全套PDF电子书

书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。

四、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

五、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里无偿获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
可以戳这里无偿获取](https://bbs.csdn.net/topics/618317507)**

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值