声明:
本文转自维基百科
如有意见请联系删除

综述

该编程语言 的Python是在20世纪80年代末的设想,和实施是在1989年12月开始由吉多·范罗苏姆在CWI在荷兰的继任者农行能够异常处理,并与接口阿米巴操作系统。Van Rossum是Python的主要作者,他在决定Python方向方面的持续核心作用体现在Python社区给予他的称号,即仁慈的生活独裁者(BDFL)。Python以BBC电视节目Monty Python的Flying Circus命名。

Python 2.0于2000年10月16日发布,具有许多主要的新功能,包括用于内存管理和支持Unicode的循环检测垃圾收集器(除了引用计数)。然而,最重要的变化是发展过程本身,转向更透明和社区支持的过程。

Python 3.0是一个主要的,向后兼容的主要版本,经过长时间的测试后于2008年12月3日发布。它的许多主要功能也被反向移植到向后兼容的Python 2.6和2.7

早期历史

1991年2月,van Rossum 将代码(标记为0.9.0版)发布到alt.sources。已经存在于该阶段中发展是类具有继承,异常处理,功能和核心数据类型list,dict,str等。在这个初始版本中还有一个借用Modula-3的模块系统 ; Van Rossum将该模块描述为“Python的主要编程单元之一”。 Python的异常模型也类似于Modula-3,增加了一个子句。 1994年comp.lang.pythonelse,Python 的主要讨论论坛成立,标志着Python用户群增长的里程碑。

版本1

Python 在1994年1月达到了1.0版本包含在这个版本的主要新特性是函数式编程工具lambda,map,filter和reduce。Van Rossum说“Python获得了lambda,reduce(),filter()和map(),这是一个错过了他们并提交工作补丁的Lisp黑客的礼貌”。

Van Rossum在CWI时发布的最新版本是Python 1.2。1995年,Van Rossum 在弗吉尼亚州雷斯顿的国家研究计划公司(CNRI)继续他的Python工作,从那里他发布了几个版本。

在1.4版本中,Python已经获得了几个新功能。其中值得注意的是Modula-3启发的关键字参数(也类似于Common Lisp的关键字参数)以及对复数的内置支持。还包括通过名称修改隐藏数据的基本形式,尽管这很容易被绕过。

在Van Rossum留在CNRI期间,他推出了“人人计算机程序设计”(CP4E)计划,旨在让更多人能够更方便地使用编程,并且在编程语言中具有基本的“识字能力”,类似于基本的英语识字和数学技能。大多数雇主。Python在这方面发挥了核心作用:由于它专注于清晰的语法,它已经适用,而CP4E的目标与其前身ABC相似。该项目由DARPA资助。截至2007年,CP4E项目处于非活动状态,虽然Python试图在其语法和语义上易于学习且不太晦涩,但与非程序员联系并不是一个积极的问题。

BeOpen

2000年,Python核心开发团队转移到BeOpen.com,组建了BeOpen PythonLabs团队。CNRI要求发布1.6版本,总结Python的开发,直到开发团队离开CNRI。因此,1.6和2.0的发布时间表有很大的重叠。Python 2.0是BeOpen.com的唯一版本。在BeOpen.com发布Python 2.0之后,Guido van Rossum和其他PythonLabs开发人员加入了Digital Creations。

Python 1.6版本包含一个新的CNRI许可证,该许可证比早期版本中使用的CWI许可证长得多。新许可证中包含一条条款,声明该许可证受弗吉尼亚州法律管辖。在自由软件基金会认为,择业的法律条款是有不兼容的GNU通用公共许可证。BeOpen,CNRI和FSF通过谈判改变了Python的免费软件许可证,使其与GPL兼容。Python 1.6.1与Python 1.6基本相同,只有一些小错误修复,并且与新的GPL兼容许可证。

版本2

Python 2.0引入了列表推导,这是从函数式编程语言SETL和Haskell借用的一个特性。除了Haskell对标点字符的偏好和Python对字母关键字的偏好之外,Python的这种结构的语法与Haskell非常相似。Python 2.0还引入了一个能够收集参考周期的垃圾收集系统。

Python 2.1与Python 1.6.1以及Python 2.0很接近。其许可证已重命名为Python Software Foundation License。从Python 2.1发布alpha版本开始,所有添加的代码,文档和规范都归Python软件基金会(PSF)所有,该软件基金会是一个非营利组织,成立于2001年,以Apache软件基金会为蓝本。该版本包括对语言规范的更改,以支持嵌套作用域,就像其他静态作用域语言一样。(默认情况下,该功能处于关闭状态,不需要,直到Python 2.2。)

Python 2.2的一项重大创新是将Python的类型(用C编写的类型)和类(用Python编写的类型)统一到一个层次结构中。这种统一使得Python的对象模型纯粹且始终如一地面向对象。还增加了受Icon启发的发电机。

Python 2.5于2006年9月发布并引入了with语句,该语句将代码块包含在上下文管理器中(例如,在运行代码块之前获取锁定并在之后释放锁定,或打开文件然后关闭它),允许资源获取是初始化(RAII)的行为,并取代常见的尝试/最终成语。

Python 2.6发布时与Python 3.0一致,并包含该版本的一些功能,以及“警告”模式,突出显示了在Python 3.0中删除的功能的使用。类似地,Python 2.7与2009年6月26日发布的Python 3.1 的功能相吻合。并行2.x和3.x版本随后停止,Python 2.7是最后一个版本在2.x系列中。2014年11月,宣布Python 2.7将在2020年之前得到支持,但鼓励用户尽快转向Python 3。

版本3

Python 3.0(也称为“Python 3000”或“Py3K”)于2008年12月3日发布。它旨在纠正语言中的基本设计缺陷 - 在保持完全向后兼容性的同时无法实现所需的更改2.x系列,需要一个新的主要版本号。Python 3的指导原则是:“通过删除旧的处理方式来减少功能重复”。

Python 3.0的开发与先前版本的理念相同。然而,由于Python已经积累了新的和冗余的方法来编写相同的任务,Python 3.0强调删除重复的结构和模块,与“应该有一个 - 最好只有一个 - 显而易见的方法”一致。

尽管如此,Python 3.0仍然是一种多范式语言。编码器仍然具有面向对象,结构化编程,函数编程和其他范例的选项,但在如此广泛的选择中,Python 3.0中的细节要比Python 2.x中更明显。

2018年7月12日,Guido van Rossum辞去领导职务。

兼容性

Python 3.0破坏了向后兼容性,并且许多Python 2代码在Python 3上不会被修改.Python的动态类型与改变某些字典方法的语义的计划相结合,例如,从Python 2.x到Python的完美机械翻译 3.0很难。名为“2to3”的工具可以自动完成翻译部分。在这方面,2to3似乎相当成功,尽管早期的评论指出,这种工具永远无法处理翻译的各个方面。在推出Python 3之前,建议需要兼容2.x和3.x系列的项目有一个源(针对2.x系列),并使用Python 3.x平台生成版本2to3的。只要代码需要在Python 2.x上运行,就不鼓励对Python 3.x代码进行编辑。不再推荐这个; 截至2012年,首选方法是创建一个可以使用兼容性模块在Python 2和3下运行的单个代码库。

功能

Python 3.0中包含的一些主要更改包括:

  • 更改,print以便它是内置函数,而不是语句。这样可以更轻松地更改模块以使用不同的打印功能,以及使语法更加规则。在Python 2.6和2.7 print()中可以作为内置函数使用,但是被print语句语法屏蔽,可以通过from future import print_function在文件顶部输入来禁用它。

  • 删除Python 2 input函数,并将函数重命名raw_input为input。Python 3的input函数表现得像Python 2的raw_input函数,因为输入总是作为字符串返回,而不是作为表达式进行求值。

  • 移动reduce(而不是map或filter)从内置的命名空间和成functools(其基本原理是,使用操作降低表达更清楚地使用累加循环);

  • 添加对可用于非正式类型声明或其他目的的可选功能注释的支持;

  • 统一str/ unicodetypes,表示文本,并引入单独的不可变bytes类型; 和一个主要对应的可变bytearray类型,两者都代表字节数组;

  • 删除向后兼容性功能,包括旧式类,字符串异常和隐式相对导入。

  • 整数除法功能的变化:在Python 2中,5 / 2是2; 在Python 3中,5 / 2是2.5。(在Python 2(2.2起)和Python 3中5 // 2都是2)。

Python 3.x系列的后续版本包含了额外的实质性新功能; 所有正在进行的语言开发都是在3.x系列中完成的。

版本发布历史

主要版本和次要版本的发布日期:

实施开始 - 1989年12月

  • Centrum Wiskunde&Informatica的内部发布- 1990年

    • Python 0.9.0 - 1991年2月20日
    • Python 0.9.1 - 1991年2月
    • Python 0.9.2 - 1991年秋季
    • Python 0.9.4 - 1991年12月24日
    • Python 0.9.5 - 1992年1月2日
    • Python 0.9.6 - 1992年4月6日
    • Python 0.9.8 - 1993年1月9日
    • Python 0.9.9 - 1993年7月29日
  • Python 1.0 - 1994年1月
    • Python 1.2 - 1995年4月10日
    • Python 1.3 - 1995年10月12日
    • Python 1.4 - 1996年10月25日
    • Python 1.5 - 1997年12月31日
    • Python 1.6 - 2000年9月5日
  • Python 2.0 - 2000年10月16日
    • Python 2.1 - 2001年4月15日
    • Python 2.2 - 2001年12月21日
    • Python 2.3 - 2003年7月29日
    • Python 2.4 - 2004年11月30日
    • Python 2.5 - 2006年9月19日
    • Python 2.6 - 2008年10月1日
    • Python 2.7 - 2010年7月3日
  • Python 3.0 - 2008年12月3日
    • Python 3.1 - 2009年6月27日
    • Python 3.2 - 2011年2月20日
    • Python 3.3 - 2012年9月29日
    • Python 3.4 - 2014年3月16日
    • Python 3.5 - 2015年9月13日
    • Python 3.6 - 2016年12月23日
    • Python 3.7 - 2018年6月27日

最新文章

  1. iOS多线程-GCD之常用函数
  2. oracle 倒库后insert id冲突的问题
  3. iOS Swift最简单的Animation
  4. Sql 行转列问题总结
  5. C#发送Email邮件(实例:QQ邮箱和Gmail邮箱)
  6. c语言小练习(蛮好玩的)
  7. Navicat 选择语句
  8. 怎么将Emeditor设置成网页查看源代码的默认编译器
  9. POJ2689-Prime Distance-区间筛素数
  10. 洛谷 [P2756] 飞行员配对方案问题 网络流实现
  11. rails将类常量重构到数据库对应的表中之二
  12. Android远程桌面助手(Build 0662)
  13. vi编辑器之删除操作
  14. mongodb副本集与分片结合
  15. python之使用set对列表去重,并保持列表原来顺序(转)
  16. 常用jqueryPlugin
  17. windows环境下搭建kafka
  18. 写个定时任务更新svn
  19. Android Studio 1.1.0 切换主题和绑定 代码提示 快捷键
  20. HDU 2891

热门文章

  1. bigdata-01-应用
  2. Lucene 7.2.1 自定义Analyzer和TokenFilter
  3. memcached优化方案实例
  4. nfs 提高传输速度
  5. SQL Server 中的 NOLOCK 到底是什么意思?
  6. 正则表达式--C#正则表达式的符号及例子
  7. 试图加载格式不正确的程序 .net
  8. [PHP] 算法-原址排序数组使奇数位于偶数前面的PHP实现
  9. Python 线程同步锁, 信号量
  10. jquery弹窗时禁止body滚动条滚动