Python的歷史

Python史（Python之歷史；Python語言歷史；History of Python）；編程語言Python是在1980年代後期所構思出來的，並於1989年12月由荷蘭CWI的吉多·范羅蘇姆開始進行編程發展。Python繼承ABC編程語言的特性，能夠處理異常的狀況；並與阿米巴作業系統（英语：Amoeba (operating system)）(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"向後移植"的方法目前不怎麽受支持。 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 表註: Date of last micro release. Date of last non security only release. Official support ended on 2020-01-01, but a final release of the code as it appeared on 2020-01-01 was released on 2020-04-20 as version 2.7.18. The Making of Python. Artima Developer. [March 22, 2007]. （原始内容存档于2016-09-01）.  van Rossum, Guido. A Brief Timeline of Python. 2009-01-20 [2019-11-29]. （原始内容存档于2011-08-25）.  Why was Python created in the first place?. Python FAQ. [March 22, 2007]. （原始内容存档于2008-02-23）.  van Rossum, Guido. Origin of BDFL. July 31, 2008 [August 1, 2008]. （原始内容存档于2012-07-21）.  Python Creator Scripts Inside Google. www.eweek.com. March 7, 2006 [May 13, 2008]. （原始内容存档于2018-08-09）.  Fairchild, Carlie. Guido van Rossum Stepping Down from Role as Python's Benevolent Dictator For Life. Linux Journal. July 12, 2018 [July 12, 2018]. （原始内容存档于2019-03-27） （英语）.  General Python FAQ — Python 3.8.3 documentation. docs.python.org. [2022-01-29]. （原始内容存档于2012-10-24）.  Kuchling, Andrew M.; Zadka, Moshe. What's New in Python 2.0. [March 22, 2007]. （原始内容存档于December 14, 2009）.  Welcome to Python.org. python.org. [December 27, 2016]. （原始内容存档于2020-06-14）.  van Rossum, Guido. PEP 3000 -- Python 3000. 2006-04-05 [December 27, 2016]. （原始内容存档于2016-03-03）.  Guido van Rossum. What’s New in Python 3.0. Python Software Foundation. 2009-02-14 [2011-02-22]. （原始内容存档于2010-12-24） （英语）.  van Rossum, Guido. Python 3000 FAQ. artima.com. [2016-12-27]. （原始内容存档于2020-11-09）.  Releases | Python.org. [2019-11-29]. （原始内容存档于2015-12-22）.  Drake, Fred L., Jr. PEP 160 -- Python 1.6 Release Schedule. 2000-07-25 [2019-11-29]. （原始内容存档于2021-12-06）.  Download Python | Python.org. [2019-11-29]. （原始内容存档于2018-08-08）.  Hylton, Jeremy. PEP 200 -- Python 2.0 Release Schedule. [2019-11-29]. （原始内容存档于2021-12-06）.  Hylton, Jeremy. PEP 226 -- Python 2.1 Release Schedule. 2000-10-16 [2019-11-29]. （原始内容存档于2021-12-06）.  Warsaw, Barry; van Rossum, Guido. PEP 251 -- Python 2.2 Release Schedule. 2001-04-17 [2019-11-29]. （原始内容存档于2021-12-06）.  van Rossum, Guido. PEP 283 -- Python 2.3 Release Schedule. 2002-02-27 [2019-11-29]. （原始内容存档于2021-12-06）.  Warsaw, Barry; Hettinger, Raymond; Baxter, Anthony. PEP 320 -- Python 2.4 Release Schedule. 2003-07-29 [2019-11-29]. （原始内容存档于2021-12-06）.  Norwitz, Neal; van Rossum, Guido; Baxter, Anthony. PEP 356 -- Python 2.5 Release Schedule. 2006-02-07 [2019-11-29]. （原始内容存档于2022-03-06）.  Norwitz, Neal; Warsaw, Barry. PEP 361 -- Python 2.6 and 3.0 Release Schedule. 2006-06-29 [2019-11-29]. （原始内容存档于2012-10-18）.  Peterson, Benjamin. PEP 373 -- Python 2.7 Release Schedule. 2008-11-03 [2020-04-20]. （原始内容存档于2020-01-13）.  17. Development Cycle — Python Developer's Guide. [2019-11-29]. （原始内容存档于2023-01-18）.  Peterson, Benjamin. PEP 375 -- Python 3.1 Release Schedule. 2009-02-08 [2019-11-29]. （原始内容存档于2017-12-22）.  Peterson, Benjamin. [RELEASED] Python 3.1.4. python-announce (邮件列表). 2011-06-12 [2019-11-29]. （原始内容存档于2021-12-06）.  Brandl, Georg. PEP 392 -- Python 3.2 Release Schedule. 2009-12-30 [2019-11-29]. （原始内容存档于2021-12-08）.  Brandl, Georg. PEP 398 -- Python 3.3 Release Schedule. 2011-03-23 [2019-11-29]. （原始内容存档于2022-02-14）.  Hastings, Larry. PEP 429 -- Python 3.4 Release Schedule. 2012-10-17 [2019-11-29]. （原始内容存档于2021-12-08）.  Hastings, Larry. [RELEASED] Python 3.4.7 is now available. python-announce (邮件列表). 2017-08-09 [2019-11-29]. （原始内容存档于2021-12-06）.  Hastings, Larry. PEP 478 -- Python 3.5 Release Schedule. 2014-09-22 [2020-03-17]. （原始内容存档于2022-02-14）.  Hastings, Larry. [RELEASED] Python 3.5.4 is now available. python-announce (邮件列表). 2017-08-08 [2019-11-29]. （原始内容存档于2021-12-06）.  Deily, Ned. PEP 494 -- Python 3.6 Release Schedule. 2015-05-30 [2021-07-15]. （原始内容存档于2022-01-27）.  PEP 494 -- Python 3.6 Release Schedule. Python Developer's Guide. Python Foundation. [20 December 2021]. （原始内容存档于2022-01-13）.  Deily, Ned. PEP 537 -- Python 3.7 Release Schedule. 2016-12-23 [2021-07-15]. （原始内容存档于2018-07-12）.  Langa, Łukasz. PEP 569 -- Python 3.8 Release Schedule. 2018-01-27 [2021-07-15]. （原始内容存档于2022-02-14）.  Langa, Łukasz. PEP 596 -- Python 3.9 Release Schedule. 2020-10-13 [2021-07-15]. （原始内容存档于2020-06-04）.  Langa, Łukasz. PEP 602 -- Annual Release Cycle for Python. 2019-06-04 [2019-11-29]. （原始内容存档于2020-06-14）.  Salgado, Pablo. PEP 619 -- Python 3.10 Release Schedule. 2020-05-25 [2021-07-15]. （原始内容存档于2022-02-13）.  Salgado, Pablo. PEP 664 -- Python 3.11 Release Schedule. 2021-07-12 [2021-07-15]. （原始内容存档于2022-03-07）.  引用错误：没有为名为pep-0693的参考文献提供内容 Wouters, Thomas. PEP 719 -- Python 3.13 Release Schedule. 2023-05-26 [2023-07-16]. （原始内容存档于2023-07-16）.  van Kemenade, Hugo. PEP 745 – Python 3.14 Release Schedule | peps.python.org. Python Enhancement Proposals (PEPs). 24 April 2024 [15 May 2024]. （原始内容存档于5 May 2024） （英语）.  軟體工程史（英语：History of software engineering） 阿米巴作業系統（英语：Amoeba (operating system)）(Amoeba/阿米巴操作系統) Python語法及語義 Guido Van Rossum blog on Python's History （页面存档备份，存于互联网档案馆）