初识Python - Python的历史(转)

声明:

本文转自维基百科

如有意见请联系删除

综述

该编程语言 的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日

原文地址:https://www.cnblogs.com/dongyangblog/p/9860583.html

时间: 2024-10-09 18:27:03

初识Python - Python的历史(转)的相关文章

初识Django —Python API接口编程入门

初识Django -Python API接口编程入门 一.WEB架构的简单介绍 Django是什么? Django是一个开放源代码的Web应用框架,由Python写成.我们的目标是用Python语言,基于Django框架,利用MVC模型,实现后台方面的针对数据库的API开发.先了解一下互联网的WEB架构, 如上图: 互联网的WEB架构大致分为三层,web层.app层和数据库层.Web层:如apache网站服务器:app层主要是应用业务:DB指后台数据库.随着互联网的高速发展,网站访问量的增长.数

[零基础学python]python中的四则运算

一提到计算机,当然现在更多人把她叫做电脑,这两个词都是指computer.不管什么,只要提到她,普遍都会想到她能够比较快地做加减乘除,甚至乘方开方等.乃至于,有的人在口语中区分不开计算机和计算器. 那么,做为零基础学习这,也就从计算小学数学题目开始吧.因为从这里开始,数学的基础知识列为肯定过关了. 复习 还是先来重温一下伟大时刻,打印hello world. 打开电脑,让python idle运行起来,然后输入: >>> print 'Hello, World' Hello, World

Python.python学习(1).学习规划

Python.python学习.学习规划 欢迎收看! 阅读此文表明你也是要学Python这门神奇的语言了.很好,来对地方了,先容我简单介绍一下这个博客系列. 这个系列的博客将会持续专注于Python这个语言的知识积累和开发经验. 编写这个系列,一方面是为了巩固我自己对Python的理解,另一方面也是希望能够分享我的经验,给初学者提供一定帮助.网上现有的各类教程已经汗牛充栋,在我学习的时候就曾参阅过许多教程与文章,它们讲解问题的思路各不相同,综合的阅读使得我最终能够整理起知识的碎片并正确地理解.所

[python] python单元测试经验总结

python写单元大多数都会用到unittest和mock,测试代码覆盖率都会用到coverage,最后再用nose把所有的东西都串起来,这样每次出版本,都能把整个项目的单元测试都运行一遍. Unittest unittest就不详细介绍了,注意几点: 测试类继承unittest.TestCase 测试类.测试方法名字最好以test开头,很多工具能根据名字来自动运行,很方便 测试类里面的setUp/tearDown会在每个case执行之前/之后执行,setUpClass/tearDownClas

[python] python 中的" "和' '都是完全转义

dict = {"a" : "apple", "b" : "banana", "g" : "grape", "o" : "orange"} for k in dict: print ("dict[$k] =",dict[k]) dict[$k] = grapedict[$k] = bananadict[$k] = appledi

[Python] python vs cplusplus

一些学习过程中的总结的两种语言的小对比,帮助理解OO programming. Continue... 字典 序列 --> 字典 Python: def get_counts(sequence): counts = {} for x in sequence: if x in counts: counts[x] += 1 else: counts[x] = 1 # 这是是硬伤,不优于c++,这里必须如此写 return counts c++:貌似没有这个问题. #include <iostrea

[Python] Python 调用 C 共享库

Linux/Unix 平台下共享库(Shared Library)文件后缀 .so:在 Windows 平台称为动态链接库(Dynamic Link Library),文件名后缀为 .dll. 利用 ctypes 模块调用 C 共享库 ctypes 是 Python 标准库提供的一个模块,Python 2.3 版本以上支持该模块.ctypes 是 Python 高级外部函数接口,Python 通过它可以调用 C 语言编译的静态链接库和动态链接库.ctypes 支持多个平台,包括 Windows,

PostgreSQL PL/Python - Python Procedural Language 安装

PL/Python - Python Procedural Language 安装 查看系统提供plpython包(已经编译好的). [[email protected] ~]# dnf search python |grep postgresql python3-postgresql.x86_64 : Connect to PostgreSQL with Python 3 python-storm-postgresql.x86_64 : PostgreSQL backend for pytho

Python python __def__ Exception AttributeError: &quot;&#39;NoneType&#39; object has no attribute

class Person: '''Represents a person.''' population = 0 def __init__(self,name): '''Initializes the person's data.''' self.name = name print '(Initializing %s)' % self.name Person.population +=1 def __del__(self): '''I am dying.''' print '%s says bye

[Python]Python 使用 for 循环的小例子

[Python]Python 使用 for 循环的小例子: In [7]: for i in range(5): ...: print "xxxx" ...: print "yyyy" ...: xxxxyyyyxxxxyyyyxxxxyyyyxxxxyyyyxxxxyyyy