Python的歷史

alt=|thumb|新Python標識，2006年–目前

Python是在1980年代後期所構思出來的編程語言，並於1989年12月由荷蘭CWI的吉多·范羅蘇姆開始進行編程發展。Python繼承ABC編程語言的特性，能夠處理異常的狀況；並與(Amoeba)交互運作。范羅蘇姆是Python的主要編程者，他在決定Python發展方向等方面的持續核心作用當中扮演著重要的角色、這些分量都反映在Python社區給他的頭銜中；即是所謂的終身仁慈獨裁者。 (不過范羅蘇姆於2018年7月12日卸任Python研發的領導者)。Python一詞是以BBC電視節目蒙提·派森的飛行馬戲團之名名之。

Python 2.0版於2000年10月16日發布的，具有許多主要的新特性，包括用於記憶體管理的循環檢測垃圾回收器(除了引用計數之外)以及對Unicode的支援。不過，Python最重要的變化是開發過程的本身，具有轉向更加透明、以及Python社區强大的技術支援。

Python 3.0版是一個主要的"向後不兼容"(backwards-incompatible)版本，經過長時間的測試之後，於2008年12月3日發佈。Python 3.0的許多主要功能也被向後移植到"向後兼容"(backwards-compatible)的Python 2.6以及2.7版本，儘管這種Python 3.0"向後移植"的方法目前不怎麽受支持。

 版本3相对版本2的主要变化 
Python3相较于Python2的变化主要在以下几个方面：
 除法运算符/在Python 3.x内总是返回浮点数。而在Python 2.6内会判断被除数与除数是否是整数。如果是整数会返回整数值，相当于整除；浮点数则返回浮点数值。要让Python 2.6统一返回浮点数值，可以from __future__ import division。

 print语句没有了，取而代之的是print()函数。可以使用2to3工具来自动转换。Python 2.6与Python 2.7部分地支持这种形式的print语法。Python 2.6要支持完全新的print()语法，可以from __future__ import print_function。

 取消了exec语句，只剩下exec()函数。Python 2.6已经支持exec()函数。

 移除Python 2的input函数，并将raw_input函数重命名为input。Python 3的input函数表现得如同Python 2的raw_input函数，在其中输入总是作为字符串返回而非作为表达式求值。

 捕获异常的语法由except exc, var改为except exc as var。使用语法except (exc1, exc2) as var可以同时捕获多种类型的异常。Python 2.6已经支持这两种语法。

  如果两个对象之间没有定义明确的有意义的顺序。使用<, >, <=, >=比较它们会抛出异常。比如1 < ""在Python 2.6里面会返回True，而在Python 3.0里面会抛出异常。现在cmp(), instance.__cmp__()函数已经被删除。

 集合（set）的新写法：{1,2,3,4}。注意{}仍然表示空的字典（dict）。

 将long类型重命名为int类型，就是说只有一种整数类型，叫做int而表现得更像老式的long。

 新的str类型表示一个Unicode字符串，相当于Python 2.x版本的unicode类型。而字节序列则用类似b"abc"的语法表示，用bytes类表示，相当于Python 2.x的str类型。现在两种类型不能再隐式地自动转换，因此在Python 3.x里"fish" + b"panda"是错误的。正确的写法是"fish" + b"panda".decode("utf-8")。Python 2.6可以自动地将字节序列识别为Unicode字符串，方法是from __future__ import unicode_literals。

 八进制数必须写成0o777，原来的形式0777不能用了；二进制必须写成0b111。新增了一个bin()函数用于将一个整数转换成二进制字符串。Python 2.6已经支持这两种语法。

 dict.keys(), dict.values(), dict.items(), map(), filter(), range(), zip()不再返回列表，而是迭代器。

将reduce（不涉及map或filter）从内建名字空间移动至functools，理由是使用reduce的代码不如使用循环和累加器变量的代码好读。

 多个模块被改名（根据PEP8）：_winreg → winreg，ConfigParser → configparser，copy_reg → copyreg，Queue → queue，SocketServer → socketserver，repr → reprlib。

 StringIO模块现在被合并到新的io模块内。new, md5, gopherlib等模块被删除。Python 2.6已经支持新的io模块。

 httplib, BaseHTTPServer, CGIHTTPServer, SimpleHTTPServer, Cookie, cookielib被合并到http包内。

版本列表

各階段之版本
編號版本之前的版本：

開始實施 - 1989年12月
CWI的內部版本 - 1990

 版本 最新微版本 發布日期 完全支援結束 安全修復結束  0.9.9 1991-02-20 1993-07-29  1.0.4 1994-01-26 1994-02-15  1.1.1 1994-10-11 1994-11-10  1995-04-13 Unsupported  1995-10-13 Unsupported  1996-10-25 Unsupported  1.5.2 1998-01-03 1999-04-13  1.6.1 2000-09-05 2000-09  2.0.1 2000-10-16 2001-06-22  2.1.3 2001-04-15 2002-04-09  2.2.3 2001-12-21 2003-05-30  2.3.7 2003-06-29 2008-03-11  2.4.6 2004-11-30 2008-12-19  2.5.6 2006-09-19 2011-05-26  2.6.9 2008-10-01 2010-08-24 2013-10-29  2.7.18 2010-07-03 2020-01-01  3.0.1 2008-12-03 2009-06-27  3.1.5 2009-06-27 2011-06-12 2012-04-06  3.2.6 2011-02-20 2013-05-13 2016-02-20  3.3.7 2012-09-29 2014-03-08 2017-09-29  3.4.10 2014-03-16 2017-08-09 2019-03-18  3.5.10 2015-09-13 2017-08-08 2020-09-30  3.6.15 2016-12-23 2018-12-24 2021-12-23  3.7.12 2018-06-27 2020-06-27 2023-06-27  3.8.20 2019-10-14 2021-05-03 2024-10-07  3.9.20 2020-10-05 2022-05-17 2025-10  3.10.15 2021-10-04 2023-04-05 2026-10 3.11.10 2022-10-24 2024-04-02 2027-10 3.12.7 2023-10-02 2025-05 2028-10  3.13.0rc3 2024-10-01 2026-05 2029-10  N/A 2025-10-01 2027-05 2030-10 圖例： 
表註:

支援

註釋

參閲

(Amoeba/阿米巴操作系統)
Python語法及語義

外部連結
 Guido Van Rossum blog on Python's History 

Python
Category:Python
Python