Python官方最後通牒:Python 2傳奇將在20年落幕,Python 3接力

一代傳奇Python 2落幕,將於2個月後(2020年元旦當天)停止維護,被Python 3全面取代。這意味著目前還在使用Python 2的大量用戶,將面臨兩種選擇:要麼繼續使用,未來不再得到任何安全更新、bug修復;要麼冒險升級到Python 3。

終於,Python官方發出了最後通牒!

Python官方非常正式的在官網上發表一封公開信,再次強調Python 2將於2020年元旦停止維護!之後,官方將不會再對任何bug、安全漏洞進行任何更新或者修復。這就意味著,如果你還想繼續使用Python 2,再碰到問題就只能自己想辦法了。

Python官方最後通牒:Python 2傳奇將在20年落幕,Python 3接力


此文一出,再次在圈內掀起了一波熱潮。當然,這並不意味著到時候Python 2就不能用了!所以Python官方也用了“垂暮”而非“關停”來定義,也是非常有畫面感了。

作為一個5年前就“應該”退役的老版本,Python 2誕生於2000年,如今已走過生命中的第二十個年頭!

這二十年來,Python 2見證了Python從默默無聞到超越Perl、C++等,和Java、C三足鼎立,成為世界上使用人數最多、上升最快的語言之一。可以說,Python 2是鑄就Python輝煌的最大功臣!

Python官方最後通牒:Python 2傳奇將在20年落幕,Python 3接力

如果你不想錯過這歷史性的一刻,記得關注Python 2落日倒計時:

https://pythonclock.org/

Python官方最後通牒:Python 2傳奇將在20年落幕,Python 3接力

Python 2是遺產;Python 3是未來!

Python 2雖是一代名將,但這個傳奇的語言版本因為年代久遠,不可避免的有一些和時代脫節的缺陷。比如Python 2的默認編碼是asscii、字符串的問題、1/2(兩個整數相除)結果是0等等。

Python的開發者很快就意識到了其中的問題,於是早早就著手進化版的研發,並於8年後(也就是2008年)正式推出了Python 3。官方曾樂觀的預計在2015年左右,讓Python 3全面取代Python 2。

Python官方最後通牒:Python 2傳奇將在20年落幕,Python 3接力

但讓他們始料未及的是,由於當時Python 2正如日中天勢不可擋,Python 2的庫也日趨豐富;而另一邊,Python 3的改動有點大,庫的支持相對較少,加上官方一向對開發者的寬容態度,這個計劃又一直往後拖延了5年。(有人以為這是官方第一次發表該決定,其實Python官方已經多次公開聲明過了,這次有點類似最後通牒的意思。)

但是Python維護者們內心有一個堅定的信念:歷史的車輪是滾滾向前的,Python 2終究要成為歷史,Python 3終究要登上舞臺。

這11年來,經過Python官方不遺餘力的說服教育、Python 3的不斷完善,如今Python 2的市場佔有率,已經不足Python 3的1/3。2年前你可能還能聽到有人鼓吹2.x,如今很多程序已經明確要求3.x了。

根據OpenSource的調查結果顯示,2017年Python 3已經是Python 2的3倍,而這一差距隨著人工智能的興起、新Python用戶的加入等,還在逐步拉大。

Python官方最後通牒:Python 2傳奇將在20年落幕,Python 3接力

Python 3已廣泛支持在標準庫中使用Tkinter創建GUI應用程序。幾乎從Python 3發佈之日起,PyQt就支持Python 3;PySide在2011年增加了Python 3支持。可以使用支持Python 3的PyGObject創建GTK + GUI,它是PyGtk的後續版本。

截至2018年2月,在Python 3 Readiness上看到,來自PyPI的360個最常下載的軟件包中,有348個已經支持Python 3。

如何從Python 2切到Python 3?

Python 3的某些方面已經被向後移植到Python 2.6和2.7,以便更容易地遷移到Python 3。

Python官方最後通牒:Python 2傳奇將在20年落幕,Python 3接力

官方也給出了非常詳細的升級指南:

https://docs.python.org/3/howto/pyporting.html

此外,因為從Python 2到Python 3之間的跨度有點大,需要一個重新適應的過程。如果你是一名Python 2的資深用戶,可以看看官方給出的操作建議:

https://python3statement.org/practicalities/

除此之外,這裡還有5個輕鬆適應從Python 2到Python 3的小tip,來自:

https://towardsdatascience.com/5-easy-tips-for-switching-from-python-2-to-3-6100f717610f

就是不想升級怎麼辦?

因為3代是2代的超進化體,這就導致一個問題:二者不兼容。但難免有些場景中,有著各種各樣無法升級的原因。比如一個重要的軟件,但是開發時間較早,升級風險過大;或者你只是個單純的不想升級的old school,那麼也是有辦法的。

Python官方最後通牒:Python 2傳奇將在20年落幕,Python 3接力

至少以下提到的3個項目,就能夠讓你在2020年以後,還可以繼續開著Python 2這輛老爺車。

Tauthon(曾用名:Python 2.8)

剛開始Tauthon叫Python 2.8,但顯然官方也沒出到Python 2.8,很容易讓人產生誤會,最終改名。

Tauthon fork自Python 2.7.13核心部分,同時Python 3中許多最受歡迎的功能也被向後兼容。

Tauthon保留了print作為聲明而非函數的存在,這是Python 2用戶最後的堅持。

PyPy

PyPy也是一個非常受歡迎的項目。它的內置JIT可以極大的提升Python的速度,而它也一直更偏愛Python 2,冷落Python 3。PyPy的官方也表示:PyPy的Python 2版本將一直存在!

Cython

Cython不是Python實現,而是個編譯器。它將Python轉換為C,極大的提升了Python的速度。

Cython支持Python 2和Python 3。Cython首席開發人員Robert Bradshaw在cython用戶郵件列表中發文稱:“Cython對2.x的支持主要是由項目需求驅動,而不是由Python的EOL時間表驅動”。也就是說,只要有項目需求,Cython會對Python 2一直支持下去。


分享到:


相關文章: