乾明 栗子 发自 凹非寺
% r- [/ i) i8 W* O0 N量子位 报道 | 公众号 QbitAI
+ [# s( _% U1 {- g7 A
8 X2 V. }% d2 K8 @+ G& zPython 2终于走到了尽头。
* k5 M6 u( q/ a! f官方宣布,新一年的钟声响起之时(2020年1月1日),就是Python 2落幕之日。
b, _2 n* d% I3 i: u6 p$ _之后,Python 2自生自灭,就算天塌下来,官方也不会再改进了。
7 h( A( x' P5 f9 d# t3 H他们解释称,并不想伤害Python 2用户,这个决定是为了Python用户好。
W: @1 V( s8 E只有放弃Python 2,他们才能让Python 3变得更好。
# D$ h. l4 @1 i+ w: ]: M0 Q% V这一举动得到了不少支持与理解: 3 A# T' B3 |* Z( _5 ?# w* v" \# G
1 ?% S& I$ s: f, e9 n, x) `也有人念旧。
+ b0 Q5 g% z( A/ N- F; L# l2 [有网友开始放话,表示自己会支持Python2的维护与更新,不为什么,就是想用Python 2。
: |' U: t- E/ F3 g但随着官方不再支持Python 2,近年来也有大量的工具宣布放弃支持Python 2。比如TensorFlow、Pandas、Numpy、Jupyter Notebook、Cython等工具。 0 h. ~/ i6 }6 P9 H0 k
. i; Y+ a2 l/ m' n/ B
如果想用好Python,摆在Python 2用户面前的路似乎就只有一条:
# \- D8 R+ s; Z+ ~; k. F* n$ R
9 k8 X& p: q2 M6 e) V' o升级到Python 3。 ; i+ N, @ p/ I2 ]( J. x- i
升级攻略' P5 g9 a% K9 M5 p
& Q4 z9 |7 Z# T9 a% ]" h6 \6 A升级的路上,会遇到很多问题,Python官方先帮你解答了一波:
$ o: ~) t* o2 v6 ^/ F$ m% j1、没在2020年1月1日之前更新会怎样呢? $ T# Y# J/ x2 X
如果有人发现Python 2里面有灾难性的安全漏洞,也不会有太多人志愿帮忙修补的。
f% ]9 |, ?# P- \( n3 I需要Python 2的相关帮助,也不会有很多人去帮你了。随着时间的推移,能帮到你的人还会越来越少。
2 R5 X4 [0 P# R' ? G很多好工具都用不了,因为只有Python 3才支持。这样的话,还可能拖累那些跟你一起工作的小伙伴。
/ I6 w& ?% v! ~) K8 k; |以上问题,有些会从1月1日开始产生,另一些会随着时间越来越严重。
2 o. S, H4 l+ w' V7 m2、我在Python 2里写的代码,怎么迁移到Python 3?
8 B7 F- l* n( D2 T# G+ S有中文文档提供,详细介绍了步骤,可以自动迁移。除此之外,由2到3,一些函数发生了变化,文档里有列表,各位可以自行查找,手动修改:
) b5 B$ V+ L4 N: C, C! N) w- J% ^8 H/ W! I* t1 {0 [
中文文档:2to3 - 自动将 Python 2 代码转为 Python 3 代码: X, d7 Y8 \- u% i+ D
https://docs.python.org/zh-cn/3.7/library/2to3.html 6 k+ K8 _2 Q C. y
另外,还有两个英文文档可以参考: 3 O6 {7 p' F f: M& p# A
Porting Python 2 Code to Python 3
7 F6 W( ?: ]2 q8 d0 A! Ahttps://docs.python.org/3/howto/pyporting.html
/ n( X. V+ \& yPython 3 Statement Practicalities8 ^. A0 R/ Q, a6 U: a2 {
https://python3statement.org/practicalities/ 4 I7 I$ n2 s- i
3、我不确定我用的软件会不会依赖于Python 2,怎么办?
; b2 J5 W/ F# k& Y) u如果你是从供应商那里买的软件,问他们就好了。如果你是向开发者或者系统管理员付费的话,就问这些人。 0 b# L/ X& G( l' X2 D2 l
要是找不到相关的供应商和技术人员,就用“Can I Use Python 3?”去查找,你到底需不需要某个用Python 2写的软件。 , Q y9 y$ P2 R* i/ u
Can I Use Python 3:
2 ?% u& t4 [2 L1 f$ L3 U c# y, Thttps://pypi.org/project/caniusepython3/ ) u: G1 q" Z; G5 z7 n
想知道某些特定的工具,和Python 3兼不兼容,可以看Python 2.7 Readiness、Python 3 Statement,以及Python 3 Readiness。 * F/ J3 e, \/ ?6 }
4、我还是依赖一些用Python 2写的软件,怎么办?
Z: u6 t8 y5 H B同理,也是询问供应商和技术支持人员,如果你是向开发者或者系统管理员付费,就去问他们。
, y6 Z% S' W' I! j2 b: G问不到的话,用“Can I Use Python 3?”来查找升级到Python 3的工具。 . x; u& t6 e+ Y
Can I Use Python 3:
. ?5 X) E* t8 c, [2 ]https://pypi.org/project/caniusepython3/
- y* f" k, l& S$ `1 C5、有人能帮我一下么? % F8 U8 k: {% f: Y+ [4 [$ I7 @
有。如果你能支付扩展支持 (Extended Support) 的费用,就跟这些供应商联系吧: ; W/ R1 q, ^& ~! t4 {
https://wiki.python.org/moin/PythonConsulting/Python%202%20support%20and%20migration
6 F6 o8 h5 Y0 P6 A你心里的问题,可能不止这些,但现在的你可能更需要一些鼓励,以便顺利完成迁移,所以来看Hacker News顶楼 (@ken) 的留言吧:
; X' ~& I2 S2 J9 P2 @Python 2到3,是我做过的最简单的迁移之一了。( T4 N( t; N( A
有一个叫“six”的库可用,而且几乎在任何情况下,都能写出2和3兼容的代码。
4 o, i- @$ y$ k, F: Z8 j/ a six库传送门:( p$ o R' t/ e) K- `0 {
https://pypi.org/project/six/ - j0 g' K' Q7 k# t$ b: d
Python 2往事2 f2 e4 d. X, n1 L8 _8 e3 @
7 q5 ?# U2 B/ D# xPython源自20世纪80年代末,当时Python的创建者Guido van Rossum正在CWI(荷兰数学与计算机研究所)研究Amoeba分布式计算系统,使用C和Unix shell。 , x) z3 H/ ^, w" a+ F, ?
在这个过程中,他逐渐对这些语言感到不爽,不仅运行速度太慢,无法处理复杂逻辑,也不得不重复造轮子。
3 J) |9 ?; t3 ~7 }8 B8 G: U6 f. R# l) w, S. y7 S
于是Guido就有了在业余时间创建Python的念头。1991年,Python第一版问世,可以说是兼具各家之长。
$ [" U) j9 }# v* x& r7 b* f之后一路势如破竹,2003年以来,Python一直在TIOBE排行榜中最受欢迎的编程语言的前十位。 - A! ?2 b, _4 Q# E( T' s, e( a
Python在2007年获得了TIOBE年度最佳编程语言奖。该奖项是根据TIOBE指数,授予全年受欢迎程度最高的编程语言。
; y+ u+ g% p, G7 D* \Python 2当时也受到大公司青睐:包括Google、Facebook、亚马逊在内的诸多知名公司都在使用它,包括YouTube、Reddit在内的大型应用,都是出自Python。 ( G% [4 U; f: z' z2 @# j) L _& K
科研机构NASA还用Python来简化航天飞机的任务流程设计,去探索太空。 3 ~! @7 G, z! U. Y
“人生苦短,我用Python”成为被大多数程序员熟知的“梗”,Python也成为了一门吞噬世界的语言。 2 c# P4 K* z% ]$ _6 S/ b- x" J. c
这中间,虽然有Python2的功劳,也有Python基于时过境迁进行的“蜕变”。
. F% T' ?7 l0 O) rPython 3未来
; y4 T7 h( {/ v( Y. y
& _8 { ]: C' J4 J9 e& C随着算力的不断增强,计算平台发生变迁,Python这条“巨蟒”在新的运行环境中,逐渐变得力有不逮。
" a+ m; w7 |, w) M: O) Z3 c2008年,为了修复缺陷,更好地适应新环境,让Python更有生命力,Python社区做了一个非常有决断的动作: ; i3 Z1 ^8 f; U5 _" W2 X
推出Python 3,不向后兼容。
9 V# m, h( ?' `: d/ X* { 当时给Python 2.7定下的Deadline是2015年。因为担心大量现有代码无法迁移到Python 3,这一时间又推迟到了2020年。
- S% Q' L* L2 r G4 O7 i" U这背后长痛不如短痛的想法,轻装前行的理念等等, 大部分开发者都理解。 : `& q2 c2 K# T* D8 P
而且,这也为Python赢得了不少使用场景,最典型的就是成为了机器学习这一热门领域的宠儿。
: b7 R1 ?1 e2 v7 P$ s) [谷歌的TensorFlow使用的就是Python。Facebook更直接,从PyTorch的名字来看就知道它和Python密不可分的联系。
. P& p2 h# L/ ?' h
! n8 P) q( J$ o& u, f8 v5 Z/ [但版本割裂带来的阵痛,还是成为了Python被诟病的一大重点。
: f" I/ P5 L& U9 N" x2 ~虽然Python也发布了程序,帮助开发者更好地将Python 2代码转换为Python 3。
0 V& v1 A3 R2 W- B( k& v但这也让不少人纠结与徘徊,更有对手看到了机会,而且来势汹汹。 9 H6 g6 A% g3 Y% r
比如谷歌2009年正式推出的Go,更是“明目张胆”地抢人——开发一款从Python 2.7到Go语言的编译器。
# ^1 V( w) t6 _" D( g1 l还有Julia。这一源自MIT的新编程语言,创建于Python 3发布第二年,2012年公开发布。
2 n5 b% @; i# b# `9 P0 `+ x主要的应用领域为数据分析、机器学习、物理学、数学、人工智能、信号与图像处理等等。
, s8 m- c/ E$ G* _! G& `5 \# o# o9 n$ T8 u6 w8 h( \
而这些,都是当下Python发挥作用、面向未来的核心阵地。 " N2 m6 K% E4 d0 G Q g
不过,Python也没有停下来发展的脚步,也在不断推陈出新,面向未来编程。
+ {0 m* G8 G: `8 P% i$ C7 E3 b比如PyPy的不断优化,SciPy和NumPy的不断完善等等,都在放大Python的能量。 1 x; q5 |) O/ p* u0 J2 T
现在,Python辞旧的倒计时已经挂起。
( ?8 q5 D- } ~8 r" a q7 G. A这个起于20世纪80年代一个业余项目的语言,到现在仍旧具备超强生命力,兼容并包,成为开发者手中的利器,不断吞噬世界。 0 Q. z3 [) c: w( e$ Q" l
& r" {# _' z; A4 w— 完 — W3 T" T& D. x3 i# w
AI社群 | 与优秀的人交流: Y1 W1 U0 [, q5 j3 P
AI内参 | 关注行业发展
5 W0 j( J- x0 g8 d8 c 量子位 QbitAI · 头条号签约作者( K4 \8 v1 w2 H! P4 f# {. v6 y$ i$ f
վ'ᴗ' ի 追踪AI技术和产品新动态
2 h+ u. q* a+ u) K ]5 \喜欢就点「在看」吧 !
" m6 r* K3 g) m" X8 r% x* }. E. N1 `) v- ]# u: r3 Q* X
8 u* b5 m: C0 |' E% a
. n8 x& O5 G9 j" l5 d来源:http://mp.weixin.qq.com/s?src=11×tamp=1568100603&ver=1843&signature=tQllAUYWjtvJD-Ng*ilEK7yHj8zS8RvhBqpoOtLc5RueKSPdeGO75IyY7EaeUXLTWSewjxAvFaNAfcHQhl3vjNwJ--o3lctt0SMmmHYx-73zV4uaRU*p1GmXrbOQwVi3&new=15 d+ k: h) w+ M- g" b: B, E
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |