Python的歷史

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

舊Python標識,1990年代–2006年
新Python標識,2006年–目前

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

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

版本3相对版本2的主要变化

Python3相较于Python2的变化主要在以下几个方面[11]

  • 除法运算符/在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(不涉及mapfilter)从内建名字空间移动至functools,理由是使用reduce的代码不如使用循环和累加器变量的代码好读[12]
  • 多个模块被改名(根据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月[2]
  • CWI的內部版本 - 1990[2]
版本 最新微版本 發布日期 完全支援結束 安全修復結束
舊版本,不再支援: 0.9 0.9.9[2] 1991-02-20[2] 1993-07-29[lower-alpha 1][2]
舊版本,不再支援: 1.0 1.0.4[2] 1994-01-26[2] 1994-02-15[lower-alpha 1][2]
舊版本,不再支援: 1.1 1.1.1[2] 1994-10-11[2] 1994-11-10[lower-alpha 1][2]
舊版本,不再支援: 1.2 1995-04-13[2] Unsupported
舊版本,不再支援: 1.3 1995-10-13[2] Unsupported
舊版本,不再支援: 1.4 1996-10-25[2] Unsupported
舊版本,不再支援: 1.5 1.5.2[13] 1998-01-03[2] 1999-04-13[lower-alpha 1][2]
舊版本,不再支援: 1.6 1.6.1[13] 2000-09-05[14] 2000-09[lower-alpha 1][13]
舊版本,不再支援: 2.0 2.0.1[15] 2000-10-16[16] 2001-06-22[lower-alpha 1][15]
舊版本,不再支援: 2.1 2.1.3[15] 2001-04-15[17] 2002-04-09[lower-alpha 1][15]
舊版本,不再支援: 2.2 2.2.3[15] 2001-12-21[18] 2003-05-30[lower-alpha 1][15]
舊版本,不再支援: 2.3 2.3.7[15] 2003-06-29[19] 2008-03-11[lower-alpha 1][15]
舊版本,不再支援: 2.4 2.4.6[15] 2004-11-30[20] 2008-12-19[lower-alpha 1][15]
舊版本,不再支援: 2.5 2.5.6[15] 2006-09-19[21] 2011-05-26[lower-alpha 1][15]
舊版本,不再支援: 2.6 2.6.9[22] 2008-10-01[22] 2010-08-24[lower-alpha 2][22] 2013-10-29[22]
舊版本,不再支援: 2.7 2.7.18[23] 2010-07-03[23] 2020-01-01[lower-alpha 3][23]
舊版本,不再支援: 3.0 3.0.1[15] 2008-12-03[22] 2009-06-27[24]
舊版本,不再支援: 3.1 3.1.5[25] 2009-06-27[25] 2011-06-12[26] 2012-04-06[25]
舊版本,不再支援: 3.2 3.2.6[27] 2011-02-20[27] 2013-05-13[lower-alpha 2][27] 2016-02-20[27]
舊版本,不再支援: 3.3 3.3.7[28] 2012-09-29[28] 2014-03-08[lower-alpha 2][28] 2017-09-29[28]
舊版本,不再支援: 3.4 3.4.10[29] 2014-03-16[29] 2017-08-09[30] 2019-03-18[lower-alpha 1][29]
舊版本,不再支援: 3.5 3.5.10[31] 2015-09-13[31] 2017-08-08[32] 2020-09-30[31]
舊版本,不再支援: 3.6 3.6.15[33] 2016-12-23[33] 2018-12-24[lower-alpha 2][33] 2021-12-23[34][33]
舊版本,不再支援: 3.7 3.7.12[35] 2018-06-27[35] 2020-06-27[lower-alpha 2][35] 2023-06-27[35]
舊版本,仍被支援: 3.8 3.8.18[36] 2019-10-14[36] 2021-05-03[36] 2024-10[36]
舊版本,仍被支援: 3.9 3.9.18 2020-10-05[37] 2022-05-17[38] 2025-10[37][38]
舊版本,仍被支援: 3.10 3.10.13[39] 2021-10-04[39] 2023-04-05[39] 2026-10[39]
舊版本,仍被支援: 3.11 3.11.6 2022-10-24[40] 2024-05[40] 2027-10[40]
當前版本: 3.12 3.12.0 2023-10-02[38] 2025-05[38] 2028-10[38]
未来版本: 3.13 3.13.0 alpha 1[41] 2024-10-01[41] 2026-05[41] 2029-10[41]
圖例:
格式:
舊版本
舊版本,仍被支援
当前版本
最新的预览版
未来版本

表註:

  1. Date of last micro release.
  2. Date of last non security only release.
  3. 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.[23]

支援

註釋

  1. . Artima Developer. [March 22, 2007]. (原始内容存档于2016-09-01).
  2. van Rossum, Guido. . 2009-01-20 [2019-11-29]. (原始内容存档于2011-08-25).
  3. . Python FAQ. [March 22, 2007]. (原始内容存档于2008-02-23).
  4. van Rossum, Guido. . July 31, 2008 [August 1, 2008]. (原始内容存档于2012-07-21).
  5. . www.eweek.com. March 7, 2006 [May 13, 2008]. (原始内容存档于2018-08-09).
  6. Fairchild, Carlie. . Linux Journal. July 12, 2018 [July 12, 2018]. (原始内容存档于2019-03-27) (英语).
  7. . docs.python.org. [2022-01-29]. (原始内容存档于2012-10-24).
  8. Kuchling, Andrew M.; Zadka, Moshe. . [March 22, 2007]. (原始内容存档于December 14, 2009).
  9. . python.org. [December 27, 2016]. (原始内容存档于2020-06-14).
  10. van Rossum, Guido. . 2006-04-05 [December 27, 2016]. (原始内容存档于2016-03-03).
  11. Guido van Rossum. . Python Software Foundation. 2009-02-14 [2011-02-22]. (原始内容存档于2010-12-24) (英语).
  12. van Rossum, Guido. . artima.com. [2016-12-27]. (原始内容存档于2020-11-09).
  13. . [2019-11-29]. (原始内容存档于2015-12-22).
  14. Drake, Fred L., Jr. . 2000-07-25 [2019-11-29]. (原始内容存档于2021-12-06).
  15. . [2019-11-29]. (原始内容存档于2018-08-08).
  16. Hylton, Jeremy. . [2019-11-29]. (原始内容存档于2021-12-06).
  17. Hylton, Jeremy. . 2000-10-16 [2019-11-29]. (原始内容存档于2021-12-06).
  18. Warsaw, Barry; van Rossum, Guido. . 2001-04-17 [2019-11-29]. (原始内容存档于2021-12-06).
  19. van Rossum, Guido. . 2002-02-27 [2019-11-29]. (原始内容存档于2021-12-06).
  20. Warsaw, Barry; Hettinger, Raymond; Baxter, Anthony. . 2003-07-29 [2019-11-29]. (原始内容存档于2021-12-06).
  21. Norwitz, Neal; van Rossum, Guido; Baxter, Anthony. . 2006-02-07 [2019-11-29]. (原始内容存档于2022-03-06).
  22. Norwitz, Neal; Warsaw, Barry. . 2006-06-29 [2019-11-29]. (原始内容存档于2012-10-18).
  23. Peterson, Benjamin. . 2008-11-03 [2020-04-20]. (原始内容存档于2020-01-13).
  24. . [2019-11-29]. (原始内容存档于2023-01-18).
  25. Peterson, Benjamin. . 2009-02-08 [2019-11-29]. (原始内容存档于2017-12-22).
  26. Peterson, Benjamin. . python-announce (邮件列表). 2011-06-12 [2019-11-29]. (原始内容存档于2021-12-06).
  27. Brandl, Georg. . 2009-12-30 [2019-11-29]. (原始内容存档于2021-12-08).
  28. Brandl, Georg. . 2011-03-23 [2019-11-29]. (原始内容存档于2022-02-14).
  29. Hastings, Larry. . 2012-10-17 [2019-11-29]. (原始内容存档于2021-12-08).
  30. Hastings, Larry. . python-announce (邮件列表). 2017-08-09 [2019-11-29]. (原始内容存档于2021-12-06).
  31. Hastings, Larry. . 2014-09-22 [2020-03-17]. (原始内容存档于2022-02-14).
  32. Hastings, Larry. . python-announce (邮件列表). 2017-08-08 [2019-11-29]. (原始内容存档于2021-12-06).
  33. Deily, Ned. . 2015-05-30 [2021-07-15]. (原始内容存档于2022-01-27).
  34. . Python Developer's Guide. Python Foundation. [20 December 2021]. (原始内容存档于2022-01-13).
  35. Deily, Ned. . 2016-12-23 [2021-07-15]. (原始内容存档于2018-07-12).
  36. Langa, Łukasz. . 2018-01-27 [2021-07-15]. (原始内容存档于2022-02-14).
  37. Langa, Łukasz. . 2020-10-13 [2021-07-15]. (原始内容存档于2020-06-04).
  38. Langa, Łukasz. . 2019-06-04 [2019-11-29]. (原始内容存档于2020-06-14).
  39. Salgado, Pablo. . 2020-05-25 [2021-07-15]. (原始内容存档于2022-02-13).
  40. Salgado, Pablo. . 2021-07-12 [2021-07-15]. (原始内容存档于2022-03-07).
  41. Wouters, Thomas. . 2023-05-26 [2023-07-16]. (原始内容存档于2023-07-16).

參閲

外部連結

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.