再见,Python2。你好,Python3

闻人翎悬 2020-11-12 23:15:59
Python python3 再见 python2 你好


 

Python2的退场,意味着一个时代的结束

 

我们这一代程序员基本都接触过python2,很多人也是从python2时代一路走来的。但是,是时候说再见了。

虽然Python之父两年前就已宣布 Python 2.7将于2020年1月1日终止支持,但是关于版本的争论从未停止。现在,python2停止更新的这一天已到来,亦即意味着开发者将不会再接收到任何来自Python 2.7的错误修复或安全更新。

我在18年的一篇博客中曾经提到python2和python3的学习选择,当时很多人问我,学python3还是python2。我的答案是3最好,2也可以,都学学也无妨,二者本来就差别不大。

到如今很快两年过去了,历经一个跌宕起伏的时代,Python 2 终于走到了尽头。有人曾经预测python活不过10年,但是python本身的简洁性,以及最近10年人工智能和数据科学的兴起,使得python焕发生机,变成了目前主流编程语言之一。

虽然它还有很多缺点,但是已经成为很多人工作、生活中必不可少的脚本语言。

就在昨天,python官方宣布,新一年的钟声响起之时(2020年1月1日),就是Python 2落幕之日。这意味着之后,Python 2自生自灭,官方也不会再维护和改进了。

官方的原话是

只有放弃Python 2,我们才能让Python 3变得更好。

 

也有人念旧,表示自己会支持Python2的维护与更新,不为什么,就是想用Python 2。

但随着官方不再支持Python 2,近年来也有大量的工具宣布放弃支持Python 2。比如TensorFlow、Pandas、Numpy、Jupyter Notebook、Cython等工具。

 

比如Fedora。为了解决这个问题,尽早去掉对 Python 2 的依赖,把基于 Python 2 的软件包都移除是最佳选择。但是实际操作起来会比较麻烦,并且可能对系统造成破坏性变更,Fedora 的几位开发者提交了一项弃用 Python 2 软件包的统一流程提案,希望移除 Python 2 软件包更具可控性,让 Python 2 退休的影响降低。

该提案具体分情况描述了几个流程,主要涉及到针对 Python 2 subpackage(子包)、module(模块) 与 requirement(运行环境依赖)等几个方面的处理:

  • 通过类似于孤立的过程,Python 2 子包可以很容易弃用。

  • 没有其它功能的 Python 2 模块将被删除。

  • 非必要的环境依赖将被删除。

  • Fedora 社区将收集信息以帮助“项目管理”。

  • 将从系统中删除不可安装的 Python 2 包。

 

如果想用好Python,摆在Python 2用户面前的路似乎就只有一条:

升级到Python 3。

 

 

 

Python 2往事

 

Python源自20世纪80年代末,当时Python的创建者Guido van Rossum正在CWI(荷兰数学与计算机研究所)研究Amoeba分布式计算系统,使用C和Unix shell。在这个过程中,他逐渐对这些语言感到不爽,不仅运行速度太慢,无法处理复杂逻辑,也不得不重复造轮子。

1989年的圣诞节期间,吉多为了在阿姆斯特丹打发时间,决心开发一个新的解释程序,作为ABC语言的一种继承。ABC是由吉多参加设计的一种教学语言,就吉多本人看来,ABC这种语言非常优美和强大,是专门为非专业程序员设计的。

但是,ABC语言并没有成功。

究其原因,吉多认为是非开发造成的。吉多决心在Python中避免这一错误,并获取了非常好的效果。

 

 

之所以选中Python(蟒蛇)作为程序的名字,是因为他是BBC电视剧--蒙提派森的飞行马戏团(Monty Python’s Flying Circus)的爱好者。

1991年,第一个Python解释器诞生,它是用C语言实现的,并能够调用C语言的库文件。

1999年,吉多向DARPA提交了一条名为”Computer Programming For Everybody”的资金申请,并在后来说明了他对Python的目标:

1.一门简单直观的语言并与主要竞争者一样强大

2.开源,以便任何人都可以为它做贡献

3.代码像纯英语那样容易理解

4.适用于短期开发的日常任务

这些想法中的基本都已经成为现实,Python已经成为一门流行的编程语言

 

  Python2的设计哲学

 

 

1. Python2开发者的哲学是:用一种方法,最好是只有一种方法来做一件事

2.如果面临多种选择,Python2开发者一般会拒绝花俏的语法,而选择明确没有或很少有歧义的语法

 

在Python社区,吉多被称为“仁慈的独裁者” 

Python在2007年获得了TIOBE年度最佳编程语言奖。该奖项是根据TIOBE指数,授予全年受欢迎程度最高的编程语言。

Python 2当时也受到大公司青睐:包括Google、Facebook、亚马逊在内的诸多知名公司都在使用它,包括YouTube、Reddit在内的大型应用,都是出自Python。

科研机构NASA还用Python来简化航天飞机的任务流程设计,去探索太空。

“人生苦短,我用Python”成为被大多数程序员熟知的“梗”,Python也成为了一门吞噬世界的语言。这中间,虽然有Python2的功劳,也有Python基于时过境迁进行的“蜕变”。

 

Python 3-未来

 

随着算力的不断增强,计算平台发生变迁,Python这条“巨蟒”在新的运行环境中,逐渐变得力有不逮。

2008年,为了修复缺陷,更好地适应新环境,让Python更有生命力,Python社区做了一个非常有决断的动作:

推出python3,不向后兼容

 

当时给Python 2.7定下的Deadline是2015年。因为担心大量现有代码无法迁移到Python 3,这一时间又推迟到了2020年。

这背后长痛不如短痛的想法,轻装前行的理念等等, 大部分开发者都理解。

而且,这也为Python赢得了不少使用场景,最典型的就是成为了机器学习这一热门领域的宠儿。

谷歌的TensorFlow使用的就是Python。Facebook更直接,从PyTorch的名字来看就知道它和Python密不可分的联系。

 

但版本割裂带来的阵痛,还是成为了Python被诟病的一大重点。虽然Python也发布了程序,帮助开发者更好地将Python 2代码转换为Python 3。

但这也让不少人纠结与徘徊,更有对手看到了机会,而且来势汹汹。

 

比如谷歌2009年正式推出的Go,更是“明目张胆”地抢人——开发一款从Python 2.7到Go语言的编译器。

还有Julia。这一源自MIT的新编程语言,创建于Python 3发布第二年,2012年公开发布。

主要的应用领域为数据分析、机器学习、物理学、数学、人工智能、信号与图像处理等等。

而这些,都是当下Python发挥作用、面向未来的核心阵地。不过,Python也没有停下来发展的脚步,也在不断推陈出新,面向未来编程。

 

比如PyPy的不断优化,SciPy和NumPy的不断完善等等,都在放大Python的能量。

现在,Python辞旧的倒计时已经挂起。

这个起于20世纪80年代一个业余项目的语言,到现在仍旧具备超强生命力,兼容并包,成为开发者手中的利器,不断吞噬世界。

 

 

Python 2,感谢你多年来的忠实服务。

Python 3,现在是你的时代。

 

 

 

 

版权声明
本文为[闻人翎悬]所创,转载请带上原文链接,感谢
https://y1ran.blog.csdn.net/article/details/103811628

  1. 利用Python爬虫获取招聘网站职位信息
  2. Using Python crawler to obtain job information of recruitment website
  3. Several highly rated Python libraries arrow, jsonpath, psutil and tenacity are recommended
  4. Python装饰器
  5. Python实现LDAP认证
  6. Python decorator
  7. Implementing LDAP authentication with Python
  8. Vscode configures Python development environment!
  9. In Python, how dare you say you can't log module? ️
  10. 我收藏的有关Python的电子书和资料
  11. python 中 lambda的一些tips
  12. python中字典的一些tips
  13. python 用生成器生成斐波那契数列
  14. python脚本转pyc踩了个坑。。。
  15. My collection of e-books and materials about Python
  16. Some tips of lambda in Python
  17. Some tips of dictionary in Python
  18. Using Python generator to generate Fibonacci sequence
  19. The conversion of Python script to PyC stepped on a pit...
  20. Python游戏开发,pygame模块,Python实现扫雷小游戏
  21. Python game development, pyGame module, python implementation of minesweeping games
  22. Python实用工具,email模块,Python实现邮件远程控制自己电脑
  23. Python utility, email module, python realizes mail remote control of its own computer
  24. 毫无头绪的自学Python,你可能连门槛都摸不到!【最佳学习路线】
  25. Python读取二进制文件代码方法解析
  26. Python字典的实现原理
  27. Without a clue, you may not even touch the threshold【 Best learning route]
  28. Parsing method of Python reading binary file code
  29. Implementation principle of Python dictionary
  30. You must know the function of pandas to parse JSON data - JSON_ normalize()
  31. Python实用案例,私人定制,Python自动化生成爱豆专属2021日历
  32. Python practical case, private customization, python automatic generation of Adu exclusive 2021 calendar
  33. 《Python实例》震惊了,用Python这么简单实现了聊天系统的脏话,广告检测
  34. "Python instance" was shocked and realized the dirty words and advertisement detection of the chat system in Python
  35. Convolutional neural network processing sequence for Python deep learning
  36. Python data structure and algorithm (1) -- enum type enum
  37. 超全大厂算法岗百问百答(推荐系统/机器学习/深度学习/C++/Spark/python)
  38. 【Python进阶】你真的明白NumPy中的ndarray吗?
  39. All questions and answers for algorithm posts of super large factories (recommended system / machine learning / deep learning / C + + / spark / Python)
  40. [advanced Python] do you really understand ndarray in numpy?
  41. 【Python进阶】Python进阶专栏栏主自述:不忘初心,砥砺前行
  42. [advanced Python] Python advanced column main readme: never forget the original intention and forge ahead
  43. python垃圾回收和缓存管理
  44. java调用Python程序
  45. java调用Python程序
  46. Python常用函数有哪些?Python基础入门课程
  47. Python garbage collection and cache management
  48. Java calling Python program
  49. Java calling Python program
  50. What functions are commonly used in Python? Introduction to Python Basics
  51. Python basic knowledge
  52. Anaconda5.2 安装 Python 库(MySQLdb)的方法
  53. Python实现对脑电数据情绪分析
  54. Anaconda 5.2 method of installing Python Library (mysqldb)
  55. Python implements emotion analysis of EEG data
  56. Master some advanced usage of Python in 30 seconds, which makes others envy it
  57. python爬取百度图片并对图片做一系列处理
  58. Python crawls Baidu pictures and does a series of processing on them
  59. python链接mysql数据库
  60. Python link MySQL database