随着人工智能以及大数据的普及,python一度成为炙手可热的技术方向。为什么Python能够得到众多互联网工作者热衷的编程语言呢?首先要了解Python的发展历程,从而更好的判断Python在每个阶段发展过程中的重要作用。
Python的诞生
Python是由荷兰人Guido van Rossum研发的。Guido van Rossum于1982年获得阿姆斯特丹大学数学和计算机硕士学位,当时Guido在CWI(数学与计算机科学国家研究所)工作,主要是为ABC语言贡献代码,工作一段时间后,他感觉现有的编程语言对非计算机专业的人十分不友好,于是1989年12匜,他构思了一门致力于解决问题的编程语言,这就是Python最初的来源。
1991年,Python的第一个解释器诞生。它有C语言实现,而且受到ABC语言的影响,因此其中很多语法来源于C语言和ABC语言。而Python1.0版本真正发布于1994年1月,这个版本主要新功能是lambda、map、filter和reduce。
Python2.0版本是在6年半之后的2000年10月份发布的,这个版本的主要新功能是内存管理和循环检测垃圾收集器以及对Unicode的支持,构成了现在Python语言框架的基础。之后再2004年,Python升级到2.4版本,同年最流行的Web框架Django诞生。之后Python陆续推Python2.5/2.6/2.7版本。截止目前仍然有很多企业在使用Python2.7版本。不过自2020年1月1日期,Python2.x版本将不再得到支持。Python的核心开发人员将不再提供其错误修复版或安全更新,Python2.x即将进入付费时代。
目前Python开发主流应用的是Python3.x版本,但是Python3和Python2版本有很多代码并不兼容,因此建议大家如果想要学习Python编程语言,可以直接从Python最新版本开始。目前最流行的Python版本是3.10版本。
接下來解釋一下python2.X和python3.0X版本的區別:
一、核心差异
1、Python2中字符串有str和Unicode两种类型,而Python3中只支持Unicode下的string。
2、Python3中采用绝对路径的方式进行import
3、Python3对于缩进更加严格,tab和space共存会导致报错TabError。而Python2中一个tab和8个space是等价的。
二、废弃差异
1、Python3中废弃print语句,统一使用print函数;
2、Python3中废弃exec语句,统一使用exec函数;
3、Python中废弃execfile语句,推荐使用exec(open(“./filename”).read())
4、Python3中废弃“<>”表示不相等,统一使用“!=”
5、Python3中废弃long证书类型,统一使用int
6、Python3中废弃Xrange函数,统一使用range,同时range的机制修改并提高了大数据集生成效率。
7、Python3中不在返回list对象
8、Python3中废弃iterator的next()函数,统一使用next(iterator)
9、Python3中废弃raw_input函数,统一使用input函数
10、Python3中废弃file函数,统一使用open函数处理文件。
11、Python3中废弃apply函数。
12、Python3中StandardError被废弃,统一使用Exception
除去这些不同之外,Python3还在某些语法和基本操作上有一些改动。对于Python的使用来说,最重要的变化是因为版本不兼容导致的第三方工具包、系统安装支持等方面的重大变化。
如果您是初学者,建议你直接学习Python3版本,对于Python2版本相关的知识稍作了解,如果在未来工作中会遇到Python2版本的相关开发工作,你可以对照Python2规范,使用Python3版本的进行开发。而对于正在使用Python2版本开发的同学而言,建议你能够尽快的熟悉Python2与Python3之间的差异,尽快迁移自己的程序。
拓展阅读:
>ABC语言:ABC语言是一个为编程初学者打造的研究项目,是NWO(荷兰科学研究组织)旗下CWI(数学与计算机科学国家研究所)主导研发的一种交互式,结构化高级语言,旨在替代BASIC、Pascal等语言,用于教学及原型软件设计。Python之父Guido van Rossum层为ABC系统开发中工作了数年。在这里仅做了解即可。
>lambda:lambda表达式是一个匿名函数,可以包含表达式和语句,并且可用于创建委托或表达式目录树类型。
>map:map()函数会根据提供的函数对制定序列做映射。
>filter:filter()函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。
>reduce:reduce()函数会对参数序列中元素进行积累。
>Django:Django是一个开源的Web应用框架,采用MTV的框架模式,即模型M,试图V和模板T。主要目的是简便、快速的开发数据库驱动的网站。强调代码复用,多个组件可以很方便的以插件形式服务于整个框架。