Python的缺点和劣势分析


Posted in Python onNovember 19, 2019

Python的短板

虽然Python拥有很多优点,但没有哪种编程语言能够胜任所有工 作,因此Python并不能完美地满足一切需求。如果要确定Python是否适 用于当前场景,还需要了解Python不擅长的领域。

Python不是速度最快的语言

Python的执行速度可能算得上是一个缺点。Python不是一个完全编 译的语言,而是先编译为内部字节码形式,然后交由Python解释器来执 行。Python为某些操作给出了高效的实现,例如,用正则表达式解析字 符串,可以做到与自己编写的任何C语言代码一样快,甚至会更快。但 在大多数情况下,采用Python会比C之类的语言实现更慢。但大家应该 保持以下观点:对绝大多数应用程序而言,现代计算机的计算能力都是 过剩的。开发速度比程序运行速度更为重要,而Python程序通常编写速 度会快很多。另外,用C或C ++编写的模块对Python进行扩展也比较容 易,程序当中的CPU密集型部分可以交由这些模块来运行。

Python的库不算最多

虽然Python自带了一批优秀的函数库集合,而且还有很多其他库可 用,但是Python在库的数量上并不算领先。像C、Java和Perl之类的编程 语言,可用的库集合数量更为庞大。它们在某些领域提供的解决方案是 Python所没有的,或者Python可能只提供了其中的一种可选方案。不过 这些往往是相当专业的领域,而Python是很容易扩展的,既可以用 Python,也可以用C或其他语言的现有库。对于几乎所有的常规计算问 题,Python库的支持能力都非常出色。

Python在编译时不检查变量类型

与某些其他编程语言不同,Python变量不像容器那样工作,而更像 是引用整数、字符串、类实例等各类对象的标签。这表示这些对象本身 虽然是有类型的,但引用它们的变量并没有与类型进行绑定。变量x可 能在某一行代码中引用一个字符串,而在另一行代码中引用一个整数:

 

>>> x = "2" 
>>> x '2'   ⇽--- x为字符串"2" 
>>> x = int(x) >>> x 
2    ⇽--- 现在x为整数值2

Python将类型与对象关联,而不是与变量关联,这就意味着Python 解释器无法识别出变量类型不符的错误。假设变量count本来是用来保 存整数的,但如果将字符串"two"赋给它,在Python里也完全没问题。 传统的程序员将这种处理方式算作一个缺点,因为对代码失去了额外的 免费检查。但是这种错误通常不难发现和修复,Python的代码检测功能 可以避免类型错误的发生。大多数Python程序员都认为,动态类型的灵 活性是划得来的。

Python对移动应用的支持不足

在过去的10年中,移动设备的数量和种类都出现了爆炸式的增长, 到处都是智能手机、平板电脑、平板手机、Chromebook,运行的操作 系统也是五花八门。Python在移动计算领域并不算强大。虽然有解决方 案可选,但在移动设备上运行Python并不总是能一帆风顺,用Python编 写和发布商业应用还存在问题。

Python对多处理器的利用不充分

现在多核处理器已经普及,在很多情况下也都会带来性能的明显提 升。但是,由于具有名为全局解释器锁(global interpreter lock,GIL) 的特性,Python的标准版本并没有按照多内核来进行设计。详情请查看 David Beazley、Larry Hastings等人关于GIL的讨论视频,或者访问 Python wiki里的GIL页面。尽管用Python可以运行并发进程,但如果需 要“开箱即用”的并发能力,Python可能并不合适。

以上就是全部相关知识点,感谢大家的学习和对三水点靠木的支持。

Python 相关文章推荐
Windows下Python2与Python3两个版本共存的方法详解
Feb 12 Python
R语言 vs Python对比:数据分析哪家强?
Nov 17 Python
Python XlsxWriter模块Chart类用法实例分析
Mar 11 Python
Python Matplotlib实现三维数据的散点图绘制
Mar 19 Python
Python中Numpy mat的使用详解
May 24 Python
django多个APP的urls设置方法(views重复问题解决)
Jul 19 Python
Python三元运算与lambda表达式实例解析
Nov 30 Python
在jupyter notebook 添加 conda 环境的操作详解
Apr 10 Python
Python3内置函数chr和ord实现进制转换
Jun 05 Python
Keras 加载已经训练好的模型进行预测操作
Jun 17 Python
python使用selenium爬虫知乎的方法示例
Oct 28 Python
matplotlib运行时配置(Runtime Configuration,rc)参数rcParams解析
Jan 05 Python
wxPython实现绘图小例子
Nov 19 #Python
python 如何去除字符串头尾的多余符号
Nov 19 #Python
wxPython实现画图板
Aug 27 #Python
如何修复使用 Python ORM 工具 SQLAlchemy 时的常见陷阱
Nov 19 #Python
Python高级特性之闭包与装饰器实例详解
Nov 19 #Python
Python高级编程之继承问题详解(super与mro)
Nov 19 #Python
Python3 Tkinkter + SQLite实现登录和注册界面
Nov 19 #Python
You might like
php将csv文件导入到mysql数据库的方法
2014/12/24 PHP
php操作redis缓存方法分享
2015/06/03 PHP
js或css文件后面跟参数的原因说明
2010/01/09 Javascript
JS模拟面向对象全解(一、类型及传递)
2011/07/13 Javascript
javascript对话框使用方法(警告框 javascript确认框 提示框)
2014/01/07 Javascript
jquery选择器排除某个DOM元素的方法(实例演示)
2014/04/25 Javascript
js 左右悬浮对联广告代码示例
2014/12/12 Javascript
jQuery应用之jQuery链用法实例
2015/01/19 Javascript
js实现宇宙星空背景效果的方法
2015/03/03 Javascript
jQuery幻灯片特效代码分享--鼠标滑过按钮时切换(2)
2020/11/18 Javascript
工作中比较实用的JavaScript验证和数据处理的干货(经典)
2016/08/03 Javascript
Vuejs 页面的区域化与组件封装的实现
2017/09/11 Javascript
67 个节约开发时间的前端开发者的工具、库和资源
2017/09/12 Javascript
vue同步父子组件和异步父子组件的生命周期顺序问题
2018/10/07 Javascript
学习使用ExpressJS 4.0中的新Router的用法
2018/11/06 Javascript
jquery实现图片无缝滚动 蒙版遮蔽效果
2020/01/11 jQuery
vue 验证两次输入的密码是否一致的方法示例
2020/09/29 Javascript
[01:10:57]Liquid vs OG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
用Python制作简单的钢琴程序的教程
2015/04/01 Python
浅谈Python2获取中文文件名的编码问题
2018/01/09 Python
Python使用matplotlib和pandas实现的画图操作【经典示例】
2018/06/13 Python
Python基于property实现类的特性操作示例
2018/06/15 Python
Python运维自动化之nginx配置文件对比操作示例
2018/08/29 Python
Python实现爬取亚马逊数据并打印出Excel文件操作示例
2019/05/16 Python
Django Admin中增加导出CSV功能过程解析
2019/09/04 Python
python实现扫雷小游戏
2020/04/24 Python
Python如何使用ConfigParser读取配置文件
2020/11/12 Python
HTML如何让IMG自动适应DIV容器大小的实现方法
2020/02/25 HTML / CSS
雅高酒店中国:Accorhotels.com China
2018/03/26 全球购物
Python文件操作的面试题
2013/06/22 面试题
《掌声》教学反思
2014/02/23 职场文书
烹饪自我鉴定
2014/03/01 职场文书
查摆问题整改措施范文
2014/10/11 职场文书
个人总结格式范文
2015/03/09 职场文书
项目备案申请报告
2015/05/15 职场文书
小学运动会入场词
2015/07/18 职场文书