乾明 栗子 发自 凹非寺
2 x v4 l$ i7 k6 p& u+ w量子位 报道 | 公众号 QbitAI$ D: z- D9 g7 Q- d( u4 y. Q: t q
% k, ?5 O0 i g8 x, B* EPython 2终于走到了尽头。
2 C& J4 r/ ~% @% m官方宣布,新一年的钟声响起之时(2020年1月1日),就是Python 2落幕之日。 $ _& }3 c1 _4 ]* F- s
之后,Python 2自生自灭,就算天塌下来,官方也不会再改进了。
% b" F( Y' O# T/ J8 l6 h1 T7 n8 l$ F他们解释称,并不想伤害Python 2用户,这个决定是为了Python用户好。 . B* a6 d) S- u9 P- |) f$ l$ h0 @7 B
只有放弃Python 2,他们才能让Python 3变得更好。 # X/ P7 m4 l* S0 V# Y
这一举动得到了不少支持与理解: , j2 J! k2 r/ }3 x: ~6 S
. U, k) M5 y, {- {2 n4 f9 D也有人念旧。 8 x# [0 x( r! }) x
有网友开始放话,表示自己会支持Python2的维护与更新,不为什么,就是想用Python 2。
% E$ z% d( {, [ m$ C但随着官方不再支持Python 2,近年来也有大量的工具宣布放弃支持Python 2。比如TensorFlow、Pandas、Numpy、Jupyter Notebook、Cython等工具。 ! x( f w; ?" n8 j9 L1 ^
# `* ?/ G1 q8 g: z' [, B; k
如果想用好Python,摆在Python 2用户面前的路似乎就只有一条:/ B" R- n8 a4 [1 _5 i2 e9 L8 @* h
* }0 a+ m7 z, H0 X: J8 \; b
升级到Python 3。
1 m/ T& `4 Q* G' y" ?/ l' l升级攻略) Q X) \6 A/ Y9 q. S3 @
( M1 |& k0 x% [- g7 i+ [8 g! {升级的路上,会遇到很多问题,Python官方先帮你解答了一波:
" b8 A: l6 a( |% f5 P9 ]1、没在2020年1月1日之前更新会怎样呢?
! Y' G; Y; r4 e如果有人发现Python 2里面有灾难性的安全漏洞,也不会有太多人志愿帮忙修补的。
" O7 m. b8 o& X/ F1 \6 r需要Python 2的相关帮助,也不会有很多人去帮你了。随着时间的推移,能帮到你的人还会越来越少。
) V5 U2 I# F- ^; \8 C1 |' l5 w/ N很多好工具都用不了,因为只有Python 3才支持。这样的话,还可能拖累那些跟你一起工作的小伙伴。
% C- @% m% J! {6 m以上问题,有些会从1月1日开始产生,另一些会随着时间越来越严重。 4 w5 J6 Y" i1 F/ Q& c# A. c
2、我在Python 2里写的代码,怎么迁移到Python 3? ) C4 V4 z& g+ b
有中文文档提供,详细介绍了步骤,可以自动迁移。除此之外,由2到3,一些函数发生了变化,文档里有列表,各位可以自行查找,手动修改:
' l. O9 J0 e5 w& D+ |, S+ H
3 `! X! P* k) `# d. H( g0 D中文文档:2to3 - 自动将 Python 2 代码转为 Python 3 代码/ y8 s& S& ]/ c- y4 s& M7 d
https://docs.python.org/zh-cn/3.7/library/2to3.html 5 e) T1 Z) K6 K! p! c. s
另外,还有两个英文文档可以参考: ! Z$ b* q( v) E& R4 O6 ~
Porting Python 2 Code to Python 3" Z1 A) v* Z- f% z& _. e
https://docs.python.org/3/howto/pyporting.html 7 R& a8 Y- K0 Y6 }1 `( ~4 r) Y
Python 3 Statement Practicalities; Z- A/ N8 H4 {. X! [2 T4 Z
https://python3statement.org/practicalities/
) W! W5 ~% Q( Q x' p3、我不确定我用的软件会不会依赖于Python 2,怎么办?
' n+ f$ J# f v7 A如果你是从供应商那里买的软件,问他们就好了。如果你是向开发者或者系统管理员付费的话,就问这些人。
7 ^2 [' N1 F$ r* ]5 _. ]& l要是找不到相关的供应商和技术人员,就用“Can I Use Python 3?”去查找,你到底需不需要某个用Python 2写的软件。 ) [/ F9 Y6 T Y. \7 R- Q0 b: W
Can I Use Python 3:, k/ f0 Q; q0 v( T
https://pypi.org/project/caniusepython3/
& ^" `0 A& ?3 l% p想知道某些特定的工具,和Python 3兼不兼容,可以看Python 2.7 Readiness、Python 3 Statement,以及Python 3 Readiness。
3 Y ?: n/ v& S) E9 z4、我还是依赖一些用Python 2写的软件,怎么办? 9 l1 n$ P& e- g" D j
同理,也是询问供应商和技术支持人员,如果你是向开发者或者系统管理员付费,就去问他们。
7 g+ o/ |( i- C; v- @& s. n问不到的话,用“Can I Use Python 3?”来查找升级到Python 3的工具。 + w1 m. ?+ G+ Q4 `: u; q) R
Can I Use Python 3:6 C: Y7 T5 o% W& m2 F7 J- r$ z
https://pypi.org/project/caniusepython3/ ( a) N6 p% ]: O9 f: J
5、有人能帮我一下么?
$ |. t! q7 `5 w1 D有。如果你能支付扩展支持 (Extended Support) 的费用,就跟这些供应商联系吧: 1 n! N H1 X6 i$ G, l
https://wiki.python.org/moin/PythonConsulting/Python%202%20support%20and%20migration
4 {2 I3 u: O, x) V. M9 G你心里的问题,可能不止这些,但现在的你可能更需要一些鼓励,以便顺利完成迁移,所以来看Hacker News顶楼 (@ken) 的留言吧: ; k) K/ H4 F! D
Python 2到3,是我做过的最简单的迁移之一了。
) x) o* |( U6 T2 K" Z- |: S有一个叫“six”的库可用,而且几乎在任何情况下,都能写出2和3兼容的代码。$ [$ ]% y8 S$ l {; f6 ], A( P- i
six库传送门:! ^& L0 u E/ l% M: a G$ Q9 {
https://pypi.org/project/six/
8 T1 F" d* Q) c1 r/ h W/ h6 w( T; f4 jPython 2往事
5 G7 |! Z% l9 K9 i% z# D8 I9 C8 c( r* E3 w$ K% u9 F( `- D0 V
Python源自20世纪80年代末,当时Python的创建者Guido van Rossum正在CWI(荷兰数学与计算机研究所)研究Amoeba分布式计算系统,使用C和Unix shell。
2 d4 ^# |+ V6 M8 \8 |) B在这个过程中,他逐渐对这些语言感到不爽,不仅运行速度太慢,无法处理复杂逻辑,也不得不重复造轮子。 * K5 B1 O. t! d" W/ r0 h: B
) Y" c8 k, S/ n0 `4 N, f
于是Guido就有了在业余时间创建Python的念头。1991年,Python第一版问世,可以说是兼具各家之长。
+ F! T: n+ `$ l5 \9 i0 ?之后一路势如破竹,2003年以来,Python一直在TIOBE排行榜中最受欢迎的编程语言的前十位。
" {* K- [0 t& f, w* S. [Python在2007年获得了TIOBE年度最佳编程语言奖。该奖项是根据TIOBE指数,授予全年受欢迎程度最高的编程语言。 / a3 Y. ? @2 k. D$ o. a
Python 2当时也受到大公司青睐:包括Google、Facebook、亚马逊在内的诸多知名公司都在使用它,包括YouTube、Reddit在内的大型应用,都是出自Python。
1 J1 a$ s( v+ t5 J; ]. S0 o科研机构NASA还用Python来简化航天飞机的任务流程设计,去探索太空。
: A+ M+ X" P8 v0 V& `: m% `* Y. \; E“人生苦短,我用Python”成为被大多数程序员熟知的“梗”,Python也成为了一门吞噬世界的语言。
- A9 O+ u) f' Q" d- W. z/ i' Z9 i- E这中间,虽然有Python2的功劳,也有Python基于时过境迁进行的“蜕变”。 6 o ~$ D( U. ] N& n& F# s( l/ c
Python 3未来' d Q1 n$ C8 ?( |
4 X# E! p& v% w4 b: J: c
随着算力的不断增强,计算平台发生变迁,Python这条“巨蟒”在新的运行环境中,逐渐变得力有不逮。 * d" W7 @. |& y% ^( e
2008年,为了修复缺陷,更好地适应新环境,让Python更有生命力,Python社区做了一个非常有决断的动作: 9 ^ o( r! m4 d! J3 o8 t* |9 U+ N
推出Python 3,不向后兼容。* }1 }, z% ]) @' [- x: O
当时给Python 2.7定下的Deadline是2015年。因为担心大量现有代码无法迁移到Python 3,这一时间又推迟到了2020年。 7 C/ @1 k7 i, X" e
这背后长痛不如短痛的想法,轻装前行的理念等等, 大部分开发者都理解。 6 M: `' b; i' b3 J' Z0 h5 p$ m% n
而且,这也为Python赢得了不少使用场景,最典型的就是成为了机器学习这一热门领域的宠儿。
2 u7 ]8 r V6 Z: h% k/ j8 K! a谷歌的TensorFlow使用的就是Python。Facebook更直接,从PyTorch的名字来看就知道它和Python密不可分的联系。 / _# Z9 k4 }7 W' M" w4 K
: w, w' ^( t( M2 ?8 V
但版本割裂带来的阵痛,还是成为了Python被诟病的一大重点。
' T7 _3 S s* F* Q$ Q1 C虽然Python也发布了程序,帮助开发者更好地将Python 2代码转换为Python 3。
- K1 L$ u" e. x N2 Q, S但这也让不少人纠结与徘徊,更有对手看到了机会,而且来势汹汹。 & m& d2 r: u0 o8 m
比如谷歌2009年正式推出的Go,更是“明目张胆”地抢人——开发一款从Python 2.7到Go语言的编译器。
! G' U4 |# i' { P4 L1 ~: h! Q7 Y! L还有Julia。这一源自MIT的新编程语言,创建于Python 3发布第二年,2012年公开发布。 - k" _, }, J3 i9 P: E+ M
主要的应用领域为数据分析、机器学习、物理学、数学、人工智能、信号与图像处理等等。 9 m H6 a( k7 r0 m/ K7 I | w
9 J- r- a3 [+ u( p
而这些,都是当下Python发挥作用、面向未来的核心阵地。 ! P; `3 O' s. o' T7 i
不过,Python也没有停下来发展的脚步,也在不断推陈出新,面向未来编程。
! r H1 Z4 n+ I' M比如PyPy的不断优化,SciPy和NumPy的不断完善等等,都在放大Python的能量。
& Z$ W* P: f- n( x# y3 B$ t现在,Python辞旧的倒计时已经挂起。 " J9 {8 a- I5 ^' R& p
这个起于20世纪80年代一个业余项目的语言,到现在仍旧具备超强生命力,兼容并包,成为开发者手中的利器,不断吞噬世界。
4 X( Y- D$ j9 E# Q! d9 O0 u" C" k% _6 S: p6 Q
— 完 —- Y/ {2 o, o9 X* A$ t; n, ~
AI社群 | 与优秀的人交流
1 \8 h9 E+ r" [1 K0 g4 ~* V/ m. ] AI内参 | 关注行业发展/ T N: ~' v8 ?; X( q1 i
 量子位 QbitAI · 头条号签约作者$ `4 F' ?/ {: A& f' R! G. X
վ'ᴗ' ի 追踪AI技术和产品新动态0 F4 T+ S) p5 @ _, p, Q
喜欢就点「在看」吧 ! u/ S8 c k2 v6 v) D/ Q! N
' h0 t) Z$ }) z4 a
, a. c! O6 g2 j
1 e# d: Q6 r* _. c' l$ c
来源:http://mp.weixin.qq.com/s?src=11×tamp=1568100603&ver=1843&signature=tQllAUYWjtvJD-Ng*ilEK7yHj8zS8RvhBqpoOtLc5RueKSPdeGO75IyY7EaeUXLTWSewjxAvFaNAfcHQhl3vjNwJ--o3lctt0SMmmHYx-73zV4uaRU*p1GmXrbOQwVi3&new=1
; b+ [/ H+ c# s7 U0 e免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |