Python的历史与优缺点整理


Posted in Python onMay 26, 2020

Python的历史

1989年圣诞节:Guido von Rossum开始写Python语言的编译器。1991年2月:第一个Python编译器(同时也是解释器)诞生,它是用C语言实现的(后面又出现了Java和C#实现的版本Jython和IronPython,以及PyPy、Brython、Pyston等其他实现),可以调用C语言的库函数。在最早的版本中,Python已经提供了对“类”,“函数”,“异常处理”等构造块的支持,同时提供了“列表”和“字典”等核心数据类型,同时支持以模块为基础的拓展系统。1994年1月:Python 1.0正式发布。2000年10月16日:Python 2.0发布,增加了实现完整的垃圾回收,提供了对Unicode的支持。与此同时,Python的整个开发过程更加透明,社区对开发进度的影响逐渐扩大,生态圈开始慢慢形成。2008年12月3日:Python 3.0发布,它并不完全兼容之前的Python代码,不过因为目前还有不少公司在项目和运维中使用Python 2.x版本,所以Python 3.x的很多新特性后来也被移植到Python 2.6/2.7版本中。

目前我们使用的Python 3.7.x的版本是在2018年发布的,Python的版本号分为三段,形如A.B.C。其中A表示大版本号,一般当整体重写,或出现不向后兼容的改变时,增加A;B表示功能更新,出现新功能时增加B;C表示小的改动(如修复了某个Bug),只要有修改就增加C。如果对Python的历史感兴趣,可以查看一篇名为《Python简史》的博文。

Python的优缺点

Python的优点很多,简单的可以总结为以下几点。

简单和明确,做一件事只有一种方法。学习曲线低,跟其他很多语言相比,Python更容易上手。开放源代码,拥有强大的社区和生态圈。解释型语言,天生具有平台可移植性。支持两种主流的编程范式(面向对象编程和函数式编程)都提供了支持。可扩展性和可嵌入性,可以调用C/C++代码,也可以在C/C++中调用Python。代码规范程度高,可读性强,适合有代码洁癖和强迫症的人群。

Python的缺点主要集中在以下几点。

执行效率稍低,因此计算密集型任务可以由C/C++编写。代码无法加密,但是现在的公司很多都不是卖软件而是卖服务,这个问题会被淡化。在开发时可以选择的框架太多(如Web框架就有100多个),有选择的地方就有错误。

Python的应用领域

目前Python在云基础设施、DevOps、网络爬虫开发、数据分析挖掘、机器学习等领域都有着广泛的应用,因此也产生了Web后端开发、数据接口开发、自动化运维、自动化测试、科学计算和可视化、数据分析、量化交易、机器人开发、图像识别和处理等一系列的职位。

知识点补充:

python语言的优点

1、作为初学python的科班出身的小白,python非常简单,非常适合人类阅读。阅读一个良好的Python程序就感觉像是在读英语一样,尽管这个英语的要求非常严格!Python的这种伪代码本质是它最大的优点之一。它使你能够专注于解决问题而不是去搞明白语言本身。

2、易学。python虽然是用c语言写的,但是它摈弃了c中非常复杂的指针,简化了python的语法。

3、Python是FLOSS(自由/开放源码软件)之一。简单地说,你可以自由地发布这个软件的拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。Python希望看到一个更加优秀的人创造并经常改进。

4、可移植性————由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工作在不同平台上)。如果你小心地避免使用依赖于系统的特性,那么你的所有Python程序无需修改就可以在下述任何平台上面运行。这些平台包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE甚至还有PocketPC、Symbian以及Google基于linux开发的Android平台!

5、在计算机内部,Python解释器把源代码转换成称为字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行。事实上,由于你不再需要担心如何编译程序,如何确保连接转载正确的库等等,所有这一切使得使用Python更加简单。由于你只需要把你的Python程序拷贝到另外一台计算机上,它就可以工作了,这也使得你的Python程序更加易于移植。

6、Python既支持面向过程的函数编程也支持面向对象的抽象编程。在面向过程的语言中,程序是由过程或仅仅是可重用代码的函数构建起来的。在面向对象的语言中,程序是由数据和功能组合而成的对象构建起来的。与其他主要的语言如C++和Java相比,Python以一种非常强大又简单的方式实现面向对象编程。

7、 可扩展性和可嵌入性。如果你需要你的一段关键代码运行得更快或者希望某些算法不公开,你可以把你的部分程序用C或C++编写,然后在你的Python程序中使用它们。你可以把Python嵌入你的C/C++程序,从而向你的程序用户提供脚本功能。

8、丰富的库。Python标准库确实很庞大。python有可定义的第三方库可以使用。它可以帮助你处理各种工作,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、GUI(图形用户界面)、Tk和其他与系统有关的操作。记住,只要安装了Python,所有这些功能都是可用的。这被称作Python的“功能齐全”理念。除了标准库以外,还有许多其他高质量的库,如wxPython、Twisted和Python图像库等等。

9、 Python确实是一种十分精彩又强大的语言。它合理地结合了高性能与使得编写程序简单有趣的特色。

10、规范的代码。Python采用强制缩进的方式使得代码具有极佳的可读性。

python语言的缺点

很多时候不能将程序连写成一行,如import sys;for i in sys.path:print i。而perl和awk就无此限制,可以较为方便的在shell下完成简单程序,不需要如Python一样,必须将程序写入一个.py文件。(对很多用户而言这也不算是限制)

1、运行速度,有速度要求的话,用C++改写关键部分吧。不过对于用户而言,机器上运行速度是可以忽略的。因为用户根本感觉不出来这种速度的差异。

2、既是优点也是缺点,python的开源性是的Python语言不能加密,但是目前国内市场纯粹靠编写软件卖给客户的越来越少,网站和移动应用不需要给客户源代码,所以这个问题就是问题了。国随着时间的推移,很多国内软件公司,尤其是游戏公司,也开始规模使用他。

3、构架选择太多(没有像C#这样的官方.net构架,也没有像ruby由于历史较短,构架开发的相对集中。Ruby on Rails 构架开发中小型web程序天下无敌)。不过这也从另一个侧面说明,python比较优秀,吸引的人才多,项目也多。

Python 相关文章推荐
python基础教程之lambda表达式使用方法
Feb 12 Python
Python map和reduce函数用法示例
Feb 26 Python
python模块简介之有序字典(OrderedDict)
Dec 01 Python
对python csv模块配置分隔符和引用符详解
Dec 12 Python
在Pycharm中执行scrapy命令的方法
Jan 16 Python
不到20行代码用Python做一个智能聊天机器人
Apr 19 Python
如何通过雪花算法用Python实现一个简单的发号器
Jul 03 Python
在python中实现同行输入/接收多个数据的示例
Jul 20 Python
Python实现图片批量加入水印代码实例
Nov 30 Python
使用python实现微信小程序自动签到功能
Apr 27 Python
Python Scrapy多页数据爬取实现过程解析
Jun 12 Python
Python基于callable函数检测对象是否可被调用
Oct 16 Python
python实现逢七拍腿小游戏的思路详解
May 26 #Python
Python是什么 Python的用处
May 26 #Python
完美解决jupyter由于无法import新包的问题
May 26 #Python
使用pth文件添加Python环境变量方式
May 26 #Python
tensorflow实现残差网络方式(mnist数据集)
May 26 #Python
Python中格式化字符串的四种实现
May 26 #Python
使用tensorflow实现VGG网络,训练mnist数据集方式
May 26 #Python
You might like
PHP正确配置mysql(apache环境)
2011/08/28 PHP
php自定义截取中文字符串-utf8版
2017/02/27 PHP
百度 popup.js 完美修正版非常的不错 脚本之家推荐
2009/04/17 Javascript
js跳转页面方法实现汇总
2014/02/11 Javascript
jquery实现限制textarea输入字数的方法
2017/09/06 jQuery
一步步教你利用webpack如何搭一个vue脚手架(超详细讲解和注释)
2018/01/08 Javascript
详解Vue Elememt-UI构建管理后台
2018/02/27 Javascript
浅析vue中常见循环遍历指令的使用 v-for
2018/04/18 Javascript
JavaScript解决浮点数计算不准确问题的方法分析
2018/07/09 Javascript
深入理解使用Vue实现Context-Menu的思考与总结
2019/03/09 Javascript
使用Layui搭建后台管理界面的操作方法
2019/09/20 Javascript
JavaScript命令模式原理与用法实例详解
2020/03/10 Javascript
js 闭包深入理解与实例分析
2020/03/19 Javascript
OpenLayer3自定义测量控件MeasureTool
2020/09/28 Javascript
[02:32]DOTA2完美大师赛场馆静安体育中心观赛全攻略
2017/11/08 DOTA
[01:04:49]KG vs LGD 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
[42:32]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第二场 11.27
2020/12/01 DOTA
小结Python用fork来创建子进程注意事项
2014/07/03 Python
在Python中使用lambda高效操作列表的教程
2015/04/24 Python
浅析Python中的多条件排序实现
2016/06/07 Python
Python中的迭代器与生成器高级用法解析
2016/06/28 Python
pandas 读取各种格式文件的方法
2018/06/22 Python
python url 参数修改方法
2018/12/26 Python
浅谈python的深浅拷贝以及fromkeys的用法
2019/03/08 Python
PyCharm GUI界面开发和exe文件生成的实现
2020/03/04 Python
python使用matplotlib的savefig保存时图片保存不完整的问题
2021/01/08 Python
英国领先的运动营养品牌:Protein Dynamix
2018/01/02 全球购物
几个人围成一圈的问题
2013/09/26 面试题
Delphi笔试题
2016/11/14 面试题
《掌声》教学反思
2014/02/23 职场文书
生态养殖创业计划书
2014/05/06 职场文书
工程负责人任命书
2014/06/06 职场文书
社团活动总结报告
2014/06/27 职场文书
学生上课迟到检讨书
2015/01/01 职场文书
幽灵公主观后感
2015/06/09 职场文书
面试中老生常谈的MySQL问答集锦夯实基础
2022/03/13 MySQL