乾明 栗子 发自 凹非寺 8 i: M0 I# k" K# Q/ q! v& |
量子位 报道 | 公众号 QbitAI( U5 Z! E& A; j3 ]
) G& {" V2 V7 N% q1 M( x# m- Y- P
Python 2终于走到了尽头。 & R4 t( p8 j h+ @
官方宣布,新一年的钟声响起之时(2020年1月1日),就是Python 2落幕之日。
1 }: e0 q4 c. l/ I$ _之后,Python 2自生自灭,就算天塌下来,官方也不会再改进了。
$ K/ p- t M, A" B他们解释称,并不想伤害Python 2用户,这个决定是为了Python用户好。 $ ~+ J: u# t# d, y
只有放弃Python 2,他们才能让Python 3变得更好。
9 q# ]$ [5 G) d" W+ s3 Q这一举动得到了不少支持与理解:
) D3 q8 V7 U' `% {$ u4 d( K# V! t0 |4 T5 x, u9 h8 t
也有人念旧。
7 \$ `% T# W! l2 J; f% G有网友开始放话,表示自己会支持Python2的维护与更新,不为什么,就是想用Python 2。 - } v; V* H) d! X
但随着官方不再支持Python 2,近年来也有大量的工具宣布放弃支持Python 2。比如TensorFlow、Pandas、Numpy、Jupyter Notebook、Cython等工具。 , D8 b" W2 r9 {" f$ D( g% p7 {
( _: I! u$ ~! G# {2 z如果想用好Python,摆在Python 2用户面前的路似乎就只有一条:
T7 a7 J# A: Q 2 [9 w" ]! X9 o$ ~7 l+ W8 {/ b
升级到Python 3。 & A- t/ a4 \3 L& y+ }- q
升级攻略, R2 q4 M; J- G7 b
( Q& Z+ {# ^6 T
升级的路上,会遇到很多问题,Python官方先帮你解答了一波:
( \8 R) ^6 ?( o+ X, o9 P: m1、没在2020年1月1日之前更新会怎样呢?
6 w% E) _+ V9 C9 ?( }0 G" C如果有人发现Python 2里面有灾难性的安全漏洞,也不会有太多人志愿帮忙修补的。 5 |% [% F. R8 X
需要Python 2的相关帮助,也不会有很多人去帮你了。随着时间的推移,能帮到你的人还会越来越少。
8 E. X/ R# E5 {# _- I% C4 v很多好工具都用不了,因为只有Python 3才支持。这样的话,还可能拖累那些跟你一起工作的小伙伴。 ! V: u, W- F3 B+ q( g
以上问题,有些会从1月1日开始产生,另一些会随着时间越来越严重。
; u6 s5 A) ?) e; I2、我在Python 2里写的代码,怎么迁移到Python 3? - p; j% J* g1 b9 w
有中文文档提供,详细介绍了步骤,可以自动迁移。除此之外,由2到3,一些函数发生了变化,文档里有列表,各位可以自行查找,手动修改:
y; s3 |4 r% Q* ] z. G$ |9 k" ~1 A0 _( w) W* J3 f1 ?
中文文档:2to3 - 自动将 Python 2 代码转为 Python 3 代码
6 b2 J# ~4 \ j q6 }, P7 C! @+ shttps://docs.python.org/zh-cn/3.7/library/2to3.html * C# g+ n% S& \. q! f" E
另外,还有两个英文文档可以参考:
8 A' O* |! E' WPorting Python 2 Code to Python 3
" ^3 e6 V/ z$ L. L8 D- ]https://docs.python.org/3/howto/pyporting.html # r1 B$ I' h; Y8 P# G) C4 D
Python 3 Statement Practicalities& I& s; K4 U" I
https://python3statement.org/practicalities/ 8 j \0 Y u. e5 j6 e7 A( i) K3 F
3、我不确定我用的软件会不会依赖于Python 2,怎么办?
q! v( Q# j+ A1 {+ `1 N3 L如果你是从供应商那里买的软件,问他们就好了。如果你是向开发者或者系统管理员付费的话,就问这些人。 + v( z ~6 d, x$ v
要是找不到相关的供应商和技术人员,就用“Can I Use Python 3?”去查找,你到底需不需要某个用Python 2写的软件。
: k% h2 E/ Q* S# XCan I Use Python 3:
! i- Z& ~3 _8 khttps://pypi.org/project/caniusepython3/ - a& N: Q7 j% c; H |; ~' P
想知道某些特定的工具,和Python 3兼不兼容,可以看Python 2.7 Readiness、Python 3 Statement,以及Python 3 Readiness。
' {. R" Z% p0 `5 n3 e& ^6 `" m4、我还是依赖一些用Python 2写的软件,怎么办?
% t6 e7 t( t% ?. Z, L" \同理,也是询问供应商和技术支持人员,如果你是向开发者或者系统管理员付费,就去问他们。
: M" L1 l# G* r4 V8 a问不到的话,用“Can I Use Python 3?”来查找升级到Python 3的工具。
0 g8 @1 I4 g9 W5 XCan I Use Python 3:
0 ?* ?9 I) o$ g' ]6 uhttps://pypi.org/project/caniusepython3/ ! [9 M: H" W& {, K" `
5、有人能帮我一下么?
( N' t$ ?: n- n A有。如果你能支付扩展支持 (Extended Support) 的费用,就跟这些供应商联系吧: 9 |" G+ h8 g; G' C7 l* U2 M0 Z
https://wiki.python.org/moin/PythonConsulting/Python%202%20support%20and%20migration
1 ?8 @7 \1 V: V$ z2 q0 S, e" z你心里的问题,可能不止这些,但现在的你可能更需要一些鼓励,以便顺利完成迁移,所以来看Hacker News顶楼 (@ken) 的留言吧: : d% f" |( w9 |8 Q' B1 `6 x, r
Python 2到3,是我做过的最简单的迁移之一了。: _( ?) s; U2 ^
有一个叫“six”的库可用,而且几乎在任何情况下,都能写出2和3兼容的代码。6 v7 \( C% e2 n
six库传送门:
" f& r* q k) B% O5 H; F8 T1 h. K2 Qhttps://pypi.org/project/six/ - f- N5 q0 Y7 {: Z" a' ]2 D! M
Python 2往事
2 f" I$ g4 {) w( d0 s
) N1 ~: p/ F) t, qPython源自20世纪80年代末,当时Python的创建者Guido van Rossum正在CWI(荷兰数学与计算机研究所)研究Amoeba分布式计算系统,使用C和Unix shell。 6 D% Z2 X7 p* |3 v, K4 @
在这个过程中,他逐渐对这些语言感到不爽,不仅运行速度太慢,无法处理复杂逻辑,也不得不重复造轮子。 $ o K( @) v5 ~( u8 z- f
; n1 h7 A4 l# Q" G+ r
于是Guido就有了在业余时间创建Python的念头。1991年,Python第一版问世,可以说是兼具各家之长。
" z# J- Q0 k4 h6 b' d, N之后一路势如破竹,2003年以来,Python一直在TIOBE排行榜中最受欢迎的编程语言的前十位。
0 D% g; {/ X) X" h# Y) oPython在2007年获得了TIOBE年度最佳编程语言奖。该奖项是根据TIOBE指数,授予全年受欢迎程度最高的编程语言。
p+ h- N$ Z. `' S; x8 J; q+ aPython 2当时也受到大公司青睐:包括Google、Facebook、亚马逊在内的诸多知名公司都在使用它,包括YouTube、Reddit在内的大型应用,都是出自Python。
! t/ x9 O- B" y- T& p0 r5 U科研机构NASA还用Python来简化航天飞机的任务流程设计,去探索太空。
0 c( H% ]9 e( q“人生苦短,我用Python”成为被大多数程序员熟知的“梗”,Python也成为了一门吞噬世界的语言。 / i9 }0 x/ P7 F$ N5 N7 ?( z
这中间,虽然有Python2的功劳,也有Python基于时过境迁进行的“蜕变”。 + ?# ?4 X# v. |% L5 \# ~& D( z7 @
Python 3未来
6 @6 o4 D; u, n' f0 w
6 i. S. _0 ~1 [& Q随着算力的不断增强,计算平台发生变迁,Python这条“巨蟒”在新的运行环境中,逐渐变得力有不逮。 6 _4 x8 D/ {3 D% z/ K
2008年,为了修复缺陷,更好地适应新环境,让Python更有生命力,Python社区做了一个非常有决断的动作:
* q# d# `+ D9 e- ~# M7 X" ~& N0 N3 u推出Python 3,不向后兼容。6 l5 ~1 T! X! I f4 X
当时给Python 2.7定下的Deadline是2015年。因为担心大量现有代码无法迁移到Python 3,这一时间又推迟到了2020年。 ! k7 F7 K G" m2 S4 A
这背后长痛不如短痛的想法,轻装前行的理念等等, 大部分开发者都理解。
* }' r, |. _* A5 e$ G+ u而且,这也为Python赢得了不少使用场景,最典型的就是成为了机器学习这一热门领域的宠儿。 4 s* U: G: H: U4 `0 _5 l
谷歌的TensorFlow使用的就是Python。Facebook更直接,从PyTorch的名字来看就知道它和Python密不可分的联系。
& c @; \# X; y& q9 Y% \2 k) ?9 T$ a' l# p( B
但版本割裂带来的阵痛,还是成为了Python被诟病的一大重点。
& A2 K" b2 ]7 @; s7 M k0 z虽然Python也发布了程序,帮助开发者更好地将Python 2代码转换为Python 3。 4 p3 Q' s; Y. q N: E5 G) ?- ^
但这也让不少人纠结与徘徊,更有对手看到了机会,而且来势汹汹。 % L! B/ q) t# h6 b* ~
比如谷歌2009年正式推出的Go,更是“明目张胆”地抢人——开发一款从Python 2.7到Go语言的编译器。 6 K w4 ?& T' w$ `
还有Julia。这一源自MIT的新编程语言,创建于Python 3发布第二年,2012年公开发布。
1 e( r; |$ b, k4 Z主要的应用领域为数据分析、机器学习、物理学、数学、人工智能、信号与图像处理等等。
. Q* ]+ b9 Y: w! l1 ` r2 V
# t' B- I5 e0 _' E而这些,都是当下Python发挥作用、面向未来的核心阵地。 ; z, } O0 O; i* ^7 ~* W" n! ]
不过,Python也没有停下来发展的脚步,也在不断推陈出新,面向未来编程。 ! C% m) R0 e0 v& u; ^# P
比如PyPy的不断优化,SciPy和NumPy的不断完善等等,都在放大Python的能量。
9 Y" [$ q2 h ]. l! E现在,Python辞旧的倒计时已经挂起。 8 m2 |5 A! ]- n9 E
这个起于20世纪80年代一个业余项目的语言,到现在仍旧具备超强生命力,兼容并包,成为开发者手中的利器,不断吞噬世界。 + H r* i# d# K9 Q W r N. L
1 D5 k7 a) @. n— 完 —
: a" Z, N9 D. b8 t: m5 _AI社群 | 与优秀的人交流
: b. j5 b/ `8 {9 p4 |9 z2 w/ O AI内参 | 关注行业发展0 M; n( {* C; I5 z
 量子位 QbitAI · 头条号签约作者
; N# J3 t* w, Y. Y" S7 ~վ'ᴗ' ի 追踪AI技术和产品新动态
& h5 W# Y; @0 B. y9 }喜欢就点「在看」吧 !
" I; |/ L/ e. ]4 L" Q: a ?; O, a+ @ H; Y9 |0 Q
/ D0 F# @9 ~. i" ~6 f
: J6 }2 e" Z6 [, J8 ^来源:http://mp.weixin.qq.com/s?src=11×tamp=1568100603&ver=1843&signature=tQllAUYWjtvJD-Ng*ilEK7yHj8zS8RvhBqpoOtLc5RueKSPdeGO75IyY7EaeUXLTWSewjxAvFaNAfcHQhl3vjNwJ--o3lctt0SMmmHYx-73zV4uaRU*p1GmXrbOQwVi3&new=1
3 E A& g- K, H6 t9 I0 B7 E3 L- o免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |