Python 2 与 3 共存了 11 年,新年就要和它道别
在 Python 3.9 都已经进入 dev 版本的 2020 年,Python 2 终于要和我们告别了。
2 and 3
Python 2 第一个版本发布于 2000 年 10 月 16 日,到今年正好是第 20 个年头。而 Python 3 发布于 2008 年 12 月 3 日,但由于 3.0 版本在底层进行了大量重构(主要是 Unicode 与 C API 的改动),无法完整兼容 Python 2,因此官方并没有停止对 Python 2 的维护。
从此 2 与 3 依然都在发布新版本,官方想通过平滑的方式过渡到新版本。然而并不是所有的社区贡献者有这种精力去同时维护两个版本,许多开源库它们至今都停更在 2.X 版本。
两版本共存的日子,一晃就是 11 年。
2 to 3
好在 Python 3 更新了越来越多独有的特性与性能优化,加上社区的不断努力推动,在近几年爆发增长的初学者当中,大部分都被推荐使用了 3.X 版本作为入门版本,3 版本在近几年才占据了主导。

终于 Python 核心开发团队对外宣布,将在 2020 年逐步停止对 Python 2 的支持,但并没有给出具体时间。
2017 年 NumPy 正式宣布将在 2019 年 1 月 1 日停止支持 Python 2。之后 pandas 与 Jupyter notebook 等开发团队纷纷宣布即将停止支持 2.X 版本。
2018 年 Python 创始人 Guido van Rossum 在官方邮件组表示,他们将于 2020 年 1 月 1 日停止对 Python 2.7 的支持,这也是 2.X 最后一个版本。

他在邮件写道:
不要玩文字游戏了!Python 2.7 的 EOL(停用)日期是 2020 年 1 月 1 日,接下来,将不会有任何更新,也不会再有源码安全补丁。在此日期之后,Python 核心开发者、PSF 和 python.org 将不会提供任何支持。如果你还想获得支持,那得付相关商业费用。当然,它是开源的,所以我们也欢迎大家 fork。
我们最初决定 2015 年为 EOL 日期,然后推迟到 2020 年,给大家的时间已经很充足了,核心开发者也辛苦太久了。此外,坦诚地说,我并不觉得停用 Python 2.7 是件坏事。
After 3
不过停止更新并不会有多大的影响,因为根据 JetBrains 最新的 Python 开发者报告显示,近九成的开发者已经使用 Python 3 版本。

相信在 2020 年使用 Python 2 的开发者将低于 5%。
如果你有代码想迁移 Python 3,别忘了尝试使用官方提供的 2to3 迁移工具。
另外 3.9 版本已经有 dev 版本了,留给 Python 3 的版本号也到头了(除非使用两位数),后续 Python 怎么走,咱们拭目以待。
最后祝各位读者新年快乐!
本文属于原创,首发于微信公众号「面向人生编程」,如需转载请后台留言。

关注后回复以下信息获取更多资源
回复【资料】获取 Python / Java 等学习资源
回复【插件】获取爬虫常用的 Chrome 插件
回复【知乎】获取最新知乎模拟登录
Python 2 与 3 共存了 11 年,新年就要和它道别的更多相关文章
- Python linux多版本共存以及虚拟环境管理(转摘)
Python linux多版本共存以及虚拟环境管理 2017年08月01日 18:42:25 sliderSun 阅读数:197更多 个人分类: python 版权声明:本文为博主原创文章,未经博 ...
- Python的平凡之路(11)
一. rabbitmq 1 进程Queue: 父进程与子进程进行交互,或者同属于同一父进程下多个子进程进行交互 2 队列通信: send1.py #!/usr/bin/env python#Au ...
- Windows 下让 Python 多个版本共存(支持 pip)
转载自 http://blog.kgzx.net/index.php/archives/40/ 因为类库兼容性的关系,写实际项目时都是用 Python 2,但自己试验性的写点小东西还是喜欢用 Pyth ...
- Python练习-循环及切片-2018.11.27
#直接用while循环去除.ad l=['xuyutao.ad','wangjun.ad','liuchao.ad','liuyan1.ad'] n=0 L=[] while n < 4: A= ...
- Python/Anaconda多版本共存的解决方案
博客中的文章均为 meelo 原创,请务必以链接形式注明 本文地址 虽然Python2大势已去,众多项目都已经支持Python3,但总有一些教程和项目只支持Python2.通常情况是计算机里既装着Py ...
- 安装python File "/usr/bin/pip", line 11, in <module> sys.exit(main()) File "/usr/lib/python3.4/site-packages/pip/__init__.py", line 215, in main locale.setlocale(locale.LC_ALL, '') File "/u
$ uname -a Linux debian 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt11-1+deb8u6 (2015-11-09) x86_64 GNU ...
- python基础-python解释器多版本共存-变量-常量
一.编程语言的发展史 机器语言-->汇编语言-->高级语言,学习难度及执行效率由高到低,开发效率由低到高 机器语言:二进制编程,0101 汇编语言:用英文字符来代替0101编程 高级语言: ...
- python之最强王者(11)——异常(exception)
1.Python 异常处理 python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误.你可以使用该功能来调试python程序. 异常处理: 本站Python教程会具体介绍. ...
- python参考手册--第10、11章执行环境、调试
1.解释器选项和环境 python [options] [-c cmd | filename | - ] [args] 例如:python -m pdb test.py 以脚本的形式运行库模块pdb ...
随机推荐
- MSE-初始化MSE
MSE(Mobility Services Engine) Cisco MSE可以配合无线实现很多功能,MSE的功能简单概括有: 1.基本位置服务捕获并聚合关键网络信息,例如设备位置,RF频谱详细信息 ...
- java中对于多态的一个实例分析
首先来看这样的一段代码,其中对于类的定义如下: class Parent{ public int myValue=100; public void printValue() { System.out. ...
- ES2.3.5版本的数据类型
1,最近使用了2.3.5版本的ES,发现在创建索引的时候出了以下错误. (1)例: POST 192.168.11.166:9200/article3/article/_mapping { " ...
- LeetCode中等题(三)
题目一: 反转从位置 m 到 n 的链表.请使用一趟扫描完成反转. 说明:1 ≤ m ≤ n ≤ 链表长度. 示例: 输入: 1->2->3->4->5->NULL, m ...
- Esp32的一些资料链接
http://wiki.ai-thinker.com/doku.php/utils/esp32_idf_menuconfig http://wiki.ai-thinker.com/doku.php ...
- Python笔记3
类格式示例: class Student(): name = '' age = 0 def print_file(self): print('name:' + self.name) print('ag ...
- 通过UA实现手机端电脑端的分离!(重点)
实现Nginx区分PC和手机访问不同的网站是物理上完全隔离的两套网站(一套手机端.一套pc端) 这样带来的好处pc端和移动端的内容可以不一样,移动版网站不需要包含特别多内容.只要包含必要的文字和较小的 ...
- 弱密码检测JR!
1.JR(Joth the Ripper)简介·一款密码分析工具,支持字典式的暴力破解·通过对 shadow 文件的口令分析,可以检测密码·官方网站:http://www.openwall.com/j ...
- Python 之并发编程之线程上
一.线程概念 进程是资源分配的最小单位 线程是计算机中调度的最小单位 多线程(即多个控制线程)的概念是,在一个进程中存在多个控制线程,多个控制线程共享该进程的地址空间,相当于一个车间内有多条流水线,都 ...
- JavaScript - onunload失效
参考 https://stackoverflow.com/questions/7794301/window-onunload-is-not-working-properly-in-chrome-bro ...