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 ...
随机推荐
- Spring Boot JPA 使用教程
JPA 是 Spring Boot 官方推荐的数据库访问组件,其充分体现了面向对象编程思想,有点像 asp.net 的 EFCore.JPA 也是众多 ORM 的抽象. 从本系列开始,都需要用到 my ...
- Java面向对象编程 -3
this关键字 this可以算是Java里面比较复杂的关键字,因为this的使用形式约定了它的灵活性,在程序里面,使用this可以实现以下三类结构的描述: 当前类中的属性:this属性; 当前类中的方 ...
- Numpy中rot90函数实现矩阵旋转
从NumPy的官方完整查到rot90函数语法格式如下: rot90(m, k=1, axes=(0, 1) m是要旋转的数组(矩阵),k是旋转的次数,默认旋转1次,那是顺时针还是逆时针呢?正数表示逆时 ...
- cmake 环境安装与使用
CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程).他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的 ...
- 解决 Anaconda 3.7更新出现CondaHTTPError与SSLError
1.问题描述: An HTTP error occurred when trying to retrieve this URL. HTTP errors are often intermittent, ...
- 《Interest Rate Risk Modeling》阅读笔记——第八章:基于 LIBOR 模型用互换和利率期权进行对冲
目录 第八章:基于 LIBOR 模型用互换和利率期权进行对冲 思维导图 推导浮息债在重置日(reset date)的价格 第八章:基于 LIBOR 模型用互换和利率期权进行对冲 思维导图 推导浮息债在 ...
- 固定ip配置
1.打开 网络和internet设置 2. 3. 4.查看详细信息 5.记住这几个 6.选择属性开始配置 7. 8.只要把ip地址设置为同一网段下面的你想要的设置的空余ip即可,其他掩码和DNS不要修 ...
- 投资人分享答疑----HHR计划----以太直播课第三课
分享大纲:(祥峰投资) 一,投资人会看什么: 1,赛道定位:“生意”还是“独角兽-to be”? 2,如何退出?上市还是收购? 3, 团队能力,愿景力 4,壁垒:数据和价值 5,价格 二,融资需要准 ...
- nginx 的location的匹配顺序
匹配规则 匹配顺序 示例 [root@python vhast]# cat test.conf server { server_name haha.com; #listen 8080; rewrite ...
- 【转】路由转发过程的IP及MAC地址变化
A-----(B1-B2)-----(C1-C2)-------E 就假设拓扑图是这个样子吧,B1和B2是路由器B上的两个接口,C1和C2是路由器C上的两个接口,A和E是PC,由主机A向主机E发送数据 ...