PyCon2018杂谈:Python3这十年Pyt

Python 3 这十年

本来想写点关于 Andrew Godwin - Taking Django Async 这个视频的,但是因为这个视频信息量太大,还在多刷之中,所以我决定写另外一个视频的解析

来自 CPython 核心开发者的一个分享 Python 3这十年

Python 3 在 2008 年正式发布,风风雨雨也走过了整整十年。同时官方早已宣布,在 2020 年对 Python 2.x 停止维护。所以某种意义上来讲,今年的 PyCon 2018 的这个 Topic 是一个非常具有特殊意义的分享

初始之地

故事开始于那个难忘的夏天

image

在 2006 年,PEP 3000 正式提出,旨在于解决一些 Python 2 中的遗留问题

  1. 大整数与整数的分裂,新式类与旧式类的分裂

  2. 除法的实现谁的姿势水平更高一点

  3. Unicode / str 傻傻分不清楚

  4. 相对引入和绝对引入

在经过社区的辛勤工作后,在 2008 年,Python 3 正式发布

正当开发者们欢天喜地的庆祝 Python 3 发布的时候,他们没有注意到,事情正在起变化

凛冬将至

Python 3 首当其冲的问题便是版本割裂,开发者们的迁移代价十分的巨大。分享里,开发者讲了一个冷笑话。

image

在早期 Python 3.x 和 Python 2.x 都没有引入一些兼容特性的时候,对于社区而言,版本割裂似乎是无可避免的一件事

image

在当时 Python 2.6 和 Python 3 中,如果想进行迁移,可能会面临这样一些问题

image

这样的问题,导致在 Python 3 最开始推出的时候,基本没有包能去兼容他

image

同时开发者举了两个当时的老大难的例子,一个是 Django,一个是 Twisted

image

为了不被人砍死,社区一度有人喊出了 Python 2.8 的口号!

image

但是随着情况的改善,社区喊出了「2.8是不可能的,这辈子都是不可能」的口号

image

知春到

随着 Python 3 的逐渐迭代与妥协,凛冬已过。首先开发者解决了第一个大问题:包管理

image

同时社区也正式给出了一些真正可行的迁移建议

image

同时针对于历史代码比较多的情况,也给出了相对应的 tips

image

(注:这一点,instagram 起了一个好头,参见 Lisa Guo, Hui Ding Keynote PyCon 2017

同时社区的开发者,也在对 Python 3 进行一些迭代,以减少大家的迁移负担

image

其中包括但是不仅限于 PEP 414 重新引入 u''PEP 461 重新引入 b'%'

社区的努力没有白费,在迁移成本减小,利好增加的情况下,2/3 割裂的情况得到了极大的改善

在 2018 年所做的一个调查中,支持 Python 3 的包所占的比例已经达到了 90+%

image

社区的迁移动力来自于三方面,一方面是 Python 3 的性能实打实的提升,开发者举了两个例子,

image

另外一个是 instagram 给出的数据:

image

第二个方面是修复了过去 Python 2.x 中遗留下的一些坑

image

包括不仅限于 Python 2 中的随机数种子并不是真的随机等等。

另一方面是 Python 3 中所引入了很多全新的东西,来帮助开发者更好的写代码,比如在 Python 3 中引入了这样一些新的 module

image

其中比较重头戏的几个就是,PEP 3156 引入的 asyncio , PEP 3148 引入的 future 模型,PEP 557 引入的 DataClass
等等

于此同时,Python 3.x 除了引入新的 module 以外,还不断地带来了新的语言特性

image

image

比如 PEP 498 引入 f-string , PEP 492 引入 async/await , PEP 484 引入 Type Annotation(再次安利这货啊,可以单独写文章介绍了,简直神器)等等

最后,分享者给大家分享了一下 Python 2 现在的境况。

image

To Be Continued

Python 2/3 的这十年,无疑是 Python 史亦或者是计算机史上最重大的一次事件之一。我们见证了 Python 的成长,也见证了 Python 开发组们的前辈的成长。所以这十年,对于我们每一个 Python 开发者而言都是意义重大的十年。

不管 Python 的未来会怎么样,下一个十年里,Python 又会变成什么模样。衷心祝愿我们每一个人都能一如既往的尽情享受写 Python 的乐趣与成就感。

Life is simple, We use Python !