乾明 栗子 发自 凹非寺
( G* i; c8 U: ]3 z, s' K" R量子位 报道 | 公众号 QbitAI
# f4 g9 ^9 A/ u; t# q2 V/ Z! t: g a r3 ~2 x T! E
Python 2终于走到了尽头。 7 h/ u+ D6 {9 b6 y. X, @& A
官方宣布,新一年的钟声响起之时(2020年1月1日),就是Python 2落幕之日。 6 {: o( A. R7 c
之后,Python 2自生自灭,就算天塌下来,官方也不会再改进了。
; Y) z8 e. U6 B3 K4 _& f他们解释称,并不想伤害Python 2用户,这个决定是为了Python用户好。 % d: R# \& T* J( K! y; @3 Z+ a
只有放弃Python 2,他们才能让Python 3变得更好。
$ Y f7 I; N2 j4 g" ]8 K, N这一举动得到了不少支持与理解:
" C1 N- f- q7 Y: T3 J
/ i) n7 t: t I B9 H也有人念旧。 - B$ q$ F5 ]. E/ F0 f6 j
有网友开始放话,表示自己会支持Python2的维护与更新,不为什么,就是想用Python 2。 % [! f$ D. p, }2 x3 ?& F
但随着官方不再支持Python 2,近年来也有大量的工具宣布放弃支持Python 2。比如TensorFlow、Pandas、Numpy、Jupyter Notebook、Cython等工具。
8 G, E* [+ G& i" D
; Z& k0 j1 O* h如果想用好Python,摆在Python 2用户面前的路似乎就只有一条:
$ t* }' t$ G9 H2 h9 ~, y8 Y J& y* `
$ G+ T2 X2 z F8 G& K+ O- O* {7 o升级到Python 3。 - F3 n/ a1 ?0 o( W
升级攻略
$ S, G, k8 {( M0 E! `1 ~7 r1 q# G# x% Z! Z" S3 h
升级的路上,会遇到很多问题,Python官方先帮你解答了一波: * ~( b) c2 I5 O; h7 H$ Y4 x
1、没在2020年1月1日之前更新会怎样呢?
- d, O" ]' [' d6 K" u如果有人发现Python 2里面有灾难性的安全漏洞,也不会有太多人志愿帮忙修补的。
1 g2 q1 o( y* p$ V需要Python 2的相关帮助,也不会有很多人去帮你了。随着时间的推移,能帮到你的人还会越来越少。
( {8 k6 r- ?- l/ e很多好工具都用不了,因为只有Python 3才支持。这样的话,还可能拖累那些跟你一起工作的小伙伴。
7 H- ^# ^2 r8 k6 s, X4 E2 o" k% I2 K以上问题,有些会从1月1日开始产生,另一些会随着时间越来越严重。 ) k1 r/ l( p U1 H
2、我在Python 2里写的代码,怎么迁移到Python 3? + a* D' F: r( r' s* p
有中文文档提供,详细介绍了步骤,可以自动迁移。除此之外,由2到3,一些函数发生了变化,文档里有列表,各位可以自行查找,手动修改: 1 k! X; i( x1 b* N% w
% x9 n* c; B' C y$ b2 U: M中文文档:2to3 - 自动将 Python 2 代码转为 Python 3 代码
6 W* u- t4 x0 H$ w5 A! Fhttps://docs.python.org/zh-cn/3.7/library/2to3.html 4 L5 Z, j; v& q0 A: Q
另外,还有两个英文文档可以参考: l& R6 T6 L, {, {
Porting Python 2 Code to Python 3
$ U. u" I! L& U; D; @4 @* \3 F! ghttps://docs.python.org/3/howto/pyporting.html % C, C* y9 E6 j7 D$ f: {
Python 3 Statement Practicalities H6 O0 U1 e6 j0 o$ ~
https://python3statement.org/practicalities/ ( }$ D) ?: [0 I9 c/ ~
3、我不确定我用的软件会不会依赖于Python 2,怎么办? & K6 A+ }$ `# A
如果你是从供应商那里买的软件,问他们就好了。如果你是向开发者或者系统管理员付费的话,就问这些人。 9 W; r1 |7 t# g1 B/ F: j# ?+ `. s
要是找不到相关的供应商和技术人员,就用“Can I Use Python 3?”去查找,你到底需不需要某个用Python 2写的软件。
/ A c+ |- [1 F! {% DCan I Use Python 3:
/ P6 r/ Q+ s0 j; U1 Dhttps://pypi.org/project/caniusepython3/
$ I) B; | c8 c- T" a; s( L想知道某些特定的工具,和Python 3兼不兼容,可以看Python 2.7 Readiness、Python 3 Statement,以及Python 3 Readiness。 ; T! ^: E% R3 P: `
4、我还是依赖一些用Python 2写的软件,怎么办?
/ B/ A% G* b2 k0 ~8 a% Q8 b7 O同理,也是询问供应商和技术支持人员,如果你是向开发者或者系统管理员付费,就去问他们。 1 ^( D+ n$ N J/ Z& y. ]1 l
问不到的话,用“Can I Use Python 3?”来查找升级到Python 3的工具。
* z. L9 y0 d4 O) m4 V M7 ICan I Use Python 3:
; K" ~/ r2 b/ [& V- @# yhttps://pypi.org/project/caniusepython3/ % d \& ~8 F* Q4 k. Q
5、有人能帮我一下么? z8 E- D& B. v
有。如果你能支付扩展支持 (Extended Support) 的费用,就跟这些供应商联系吧:
0 k A7 I: _1 M5 x' A7 d% g) E$ uhttps://wiki.python.org/moin/PythonConsulting/Python%202%20support%20and%20migration
5 w0 E: E/ S! {8 n8 ^' j8 ]! a你心里的问题,可能不止这些,但现在的你可能更需要一些鼓励,以便顺利完成迁移,所以来看Hacker News顶楼 (@ken) 的留言吧:
7 n, ^0 p0 ]6 N. J" u: J& ^$ N6 d# XPython 2到3,是我做过的最简单的迁移之一了。, [0 l8 j! p' {- @9 E4 J
有一个叫“six”的库可用,而且几乎在任何情况下,都能写出2和3兼容的代码。
1 H! f4 M% o7 r0 T7 N six库传送门:
$ p/ }0 o2 r7 g. N. ehttps://pypi.org/project/six/
6 b+ q d# t: Y. zPython 2往事/ B; P4 U* e# s. [2 f
* K8 k/ `7 T g5 f4 S- `Python源自20世纪80年代末,当时Python的创建者Guido van Rossum正在CWI(荷兰数学与计算机研究所)研究Amoeba分布式计算系统,使用C和Unix shell。 * ?4 D% ?5 V$ Z/ z2 P
在这个过程中,他逐渐对这些语言感到不爽,不仅运行速度太慢,无法处理复杂逻辑,也不得不重复造轮子。
2 t& t2 T- A d0 h# J) l3 K, l8 c. P/ Z2 z3 }/ M8 G
于是Guido就有了在业余时间创建Python的念头。1991年,Python第一版问世,可以说是兼具各家之长。
: z$ J8 q2 Z6 ]! d3 D之后一路势如破竹,2003年以来,Python一直在TIOBE排行榜中最受欢迎的编程语言的前十位。 8 V% @5 f8 _$ h* t) f& f+ w
Python在2007年获得了TIOBE年度最佳编程语言奖。该奖项是根据TIOBE指数,授予全年受欢迎程度最高的编程语言。
; c/ g$ y+ r; W; qPython 2当时也受到大公司青睐:包括Google、Facebook、亚马逊在内的诸多知名公司都在使用它,包括YouTube、Reddit在内的大型应用,都是出自Python。 6 `' K8 o6 M, }* Z2 E9 o+ f. R
科研机构NASA还用Python来简化航天飞机的任务流程设计,去探索太空。 ; w( U3 O5 y* a9 D5 A
“人生苦短,我用Python”成为被大多数程序员熟知的“梗”,Python也成为了一门吞噬世界的语言。 3 Z: c( g% I6 f$ v1 H) \- H' Q
这中间,虽然有Python2的功劳,也有Python基于时过境迁进行的“蜕变”。
% O8 f9 E8 U& e4 j! c) cPython 3未来! H& a( C0 v% Z1 f! c
6 I- \9 Z1 H5 W+ S0 @7 i% Q* s9 h) Y随着算力的不断增强,计算平台发生变迁,Python这条“巨蟒”在新的运行环境中,逐渐变得力有不逮。 : m8 N! W9 g- O) e
2008年,为了修复缺陷,更好地适应新环境,让Python更有生命力,Python社区做了一个非常有决断的动作: 6 U; F9 e' b0 b3 G
推出Python 3,不向后兼容。1 U1 F* G# B- P6 U4 ?9 v% T
当时给Python 2.7定下的Deadline是2015年。因为担心大量现有代码无法迁移到Python 3,这一时间又推迟到了2020年。 $ o$ T- }- F- l+ k- f
这背后长痛不如短痛的想法,轻装前行的理念等等, 大部分开发者都理解。
# k. ~9 i8 f' }7 T而且,这也为Python赢得了不少使用场景,最典型的就是成为了机器学习这一热门领域的宠儿。
' M0 x0 \, L. K! t1 H, b( N, P# Y谷歌的TensorFlow使用的就是Python。Facebook更直接,从PyTorch的名字来看就知道它和Python密不可分的联系。
8 ^+ C+ X! e/ O! d6 \* d
% E4 |; F ?5 S7 g* H% r但版本割裂带来的阵痛,还是成为了Python被诟病的一大重点。
# |" x9 \, S! U+ |6 _$ I虽然Python也发布了程序,帮助开发者更好地将Python 2代码转换为Python 3。
3 N. `: S. y: u j$ H/ p但这也让不少人纠结与徘徊,更有对手看到了机会,而且来势汹汹。
* ?3 B( B5 g2 l+ J, Z比如谷歌2009年正式推出的Go,更是“明目张胆”地抢人——开发一款从Python 2.7到Go语言的编译器。 ; w) ]7 M$ n& i3 { M: o' |3 I& M
还有Julia。这一源自MIT的新编程语言,创建于Python 3发布第二年,2012年公开发布。
+ U) w" V1 h$ m5 y6 B6 T9 H主要的应用领域为数据分析、机器学习、物理学、数学、人工智能、信号与图像处理等等。 " r) a, u3 Q% M" e9 V
- P/ r( S z6 z
而这些,都是当下Python发挥作用、面向未来的核心阵地。
) g9 `% Y \& Q9 u/ x; |& ]' w不过,Python也没有停下来发展的脚步,也在不断推陈出新,面向未来编程。
) ?/ X% `# n: |$ O) k0 X! U& [比如PyPy的不断优化,SciPy和NumPy的不断完善等等,都在放大Python的能量。
- ]. D* `3 b# n, H现在,Python辞旧的倒计时已经挂起。
4 l; ~# p6 {" r R# t' r这个起于20世纪80年代一个业余项目的语言,到现在仍旧具备超强生命力,兼容并包,成为开发者手中的利器,不断吞噬世界。 ' p& W( ]4 v) F; y
0 ?/ R3 q9 B* [4 N$ Q( ~3 j— 完 —
. ]& f5 |$ s( C2 @: s AAI社群 | 与优秀的人交流! g% J9 W& ~$ b% z7 Y
AI内参 | 关注行业发展
) Y) {$ K* f8 P9 R3 q/ s0 C$ Y& ] 量子位 QbitAI · 头条号签约作者; `; ^* L: x0 l
վ'ᴗ' ի 追踪AI技术和产品新动态
$ f0 a% S$ k! s1 f& x喜欢就点「在看」吧 ! / x( T$ ~' d2 r7 ?: ^9 H5 O0 \
: S# u% _: \% R2 C; i5 }5 | 4 \7 Q5 h3 s8 U: M" z# x
& L/ m6 v5 J7 w3 c7 p来源:http://mp.weixin.qq.com/s?src=11×tamp=1568100603&ver=1843&signature=tQllAUYWjtvJD-Ng*ilEK7yHj8zS8RvhBqpoOtLc5RueKSPdeGO75IyY7EaeUXLTWSewjxAvFaNAfcHQhl3vjNwJ--o3lctt0SMmmHYx-73zV4uaRU*p1GmXrbOQwVi3&new=1
: S. u: d. ^0 V4 c/ h# B免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |