閱讀574 返回首頁    go Python


瘋狂上漲的 Python,開發者應從 2.x 還是 3.x 著手?

關鍵時刻,第一時間送達!

縱觀各大編程語言在 2017 年的發展情況,我們會發現湧現出諸如 Go、Swift 這類後起之秀,而其中最為耀眼的當屬 Python。之所以 Python 如此受捧,不僅僅是人工智能、數字科學領域的興起,而且與其自身的特性必不可分,正應了“Life is short,you need Python!”。但與此同時,不少開發者開始糾結 Python 的入門究竟該從 2.x 還是 3.x 開始學起?

畢竟 Python 語言作者 Guido van Rossum 曾於 2014 年宣布 Python 2.7 支持時間延長到 2020 年。Python 2.7 是 2.x 係列的最後一個版本,它的繼承者 Python 3.0 在 2008 年 12 月發布,但不兼容 2.x 係列。也就意味著 2020 年之前,對於 Python 2.x 會一直提供 bug 修正,但它卻與 3.x 不兼容。 所以我們該如何抉擇?又該如何快速著手呢?

Python 2.x vs Python 3.x

基於此,Semaphore 社區調查了 Python 在 Semaphore 的托管 CI 服務中構建應用程序的使用情況。據去年的調查結果顯示,有 70% 以上的用戶仍在使用 Python 2.7,Python 3 的使用率較低。而今年,Python 3 的使用出現了明顯的上漲,漲幅約 8.2%。如下圖所示:

相較而言,使用 Python 3 的開發者更願意進行版本更新。去年,Python 3.5 的使用率達到 60%,Python 3.4 的使用率占 30%。今年的調查數據顯示,3.5 版和 3.4 版的使用率分別隻占 34% 和 20%,有 35% 的用戶已經開始使用 Python 3.6。

根據 Python 2.7 和 Python 3 各版本的使用率對比圖,我們可以看出 Python 3.x 版的用戶群體正在迅速擴展:

針對大家始終糾結的 Python 2.x 或 Python 3.x,不少網友也給出了自己的建議:

nexcvon:Python 3 有很大改進,比 Python 2 更容易理解。 如果大家決定學 Python 2.x,建議當被 string bytes 搞暈時,了解一下 Python 3,再做決定。另外,Python 3 的庫已經比較全了,不支持 Python 3 的,多數是不再維護的。

林燦斌:編程最重要的是編程思想,Python 3 和 Python 2 雖然不同,但是它的思想基本是共通的,隻有少量的語法差異。而編程中,語法隻是細枝末節的東西。當你學會了 Python 3,隻要稍微花一點時間學習 Python 2 的語法,那麼這兩種語言也都學會了。而認識語法差距所花費的時間,一般也不會比大家在糾結學哪個版本所花的時間更多。

adv adj:Python 語言的最大優勢並不是語言本身的特性,而是它擁有腳本語言中最豐富的第三方包(模塊、庫),這是其他任何語言都無法比擬的巨大優勢。很多人學 Python 並不是因為 Python 適合開發什麼軟件或者工程,而是因為 Python 擁有某個非常適合他們工作相關領域的簡單易用的工具包。所以,學 Python 2 還是 3 關鍵要考慮的是你所準備使用的模塊是否支持 3.x。

黃歡:建議先學習 Python2.7, 隨後再了解 Python 3.x 與 Python 2.7 的差異部分。

整體而言,基於以上數據,大多數開發者更傾向於 Python 3.x。

快速上手 Python

有了一定的方向,接下來的問題及時如何快速著手 Python 的學習?下文將推薦開發者必備的六個庫,無論你是正在使用 Python 進行快速開發,還是在為 Python 桌麵應用製作原生 UI ,或者是在優化現有的 Python 代碼,以下這些 Python 項目都是應該使用的。

Python 憑借其易用的特點,已經被工業界和學術界廣泛采用。另一方麵,Python 豐富的第三方項目——庫、附加組件,和輔助的開發成果——使得 Python 語言的應用範圍被不斷擴大。

其中一些項目,比如 PyInstaller 和 WxPython ,為那些製作桌麵應用和終端應用的 Python 開發者提供了便利。其他的項目, 比如 PyPy , 則是用來給服務器端 Python 應用提供額外的動力。還有一些,像 PBR 、CFFI 和 MyPy , 適用於差不多所有五花八門的 Python 應用,無論在什麼地方運行。

以下所有這些項目,在近幾周都發布了新的主要版本。

Python 必備之 PyPy

PyPy 主要用於何處?

如果你需要更快的 Python 應用程序,最簡單的實現的方法就是通過 PyPy ,Python 運行時與實時(JIT)編譯器。與使用普通的 Python 對等程序相比,使用 PyPy 的 Python 應用程序的運行速度平均提升 7.5 倍。不幸的是,PyPy 與許多 Python 的明星框架並不是很好地兼容。PyPy 5.9 在解決這個問題上取得了重大進展。

PyPy 5.9 的功能

數據科學框架 NumPy 和 Pandas 現在運行在 PyPy 的 Python 2.7 兼容版本上。這些框架的大部分問題來源於 PyPy 與現有 C 代碼的接口。為了解決這個問題,PyPy 5.9 對 CFFI 庫(見下文)和 PyPy 的 Python C API 兼容性層進行了改進。

此外,在 5.9 發布版本中,PyPy 的 JSON 解析器在處理多種 JSON 對象,尤其是那些重複使用的相同的詞典鍵值時,明顯更快。

何處下載 PyPy 5.9

PyPy 的網站二進製版本下載地址:https://pypy.org/download.html。

官方二進製文件包括 Windows、Mac OS 和 Linux 的不同 CPU 架構。請注意,為了兼容 Python 2.7 和 Python 3.5 ,存在不同的二進製文件,因此請確保你正在獲取與你將要運行的腳本所匹配的版本。

源碼和 Bug 跟蹤可以在 BitBucket(https://bitbucket.org/pypy/pypy) 上找到。

Python 必備之 CFFI

CFFI 主要用於何處?

C 外部函數接口庫(CFFI)為 Python 應用程序與獨立 C 庫的交互提供了一種機製。雖然 Python 的 stock 版本,CPython,也擁有自己的庫來完成此類功能,稱為 Ctypes ,但對 Python 用戶來說,比起 Ctypes ,CFFI 使得與 C 庫的交互更容易、更簡便。

CFFI 1.11 的功能

與 PyPy 一起更新的 CFFI v1.11 增加了很小但很有用的改動。現在可以在即將發布的 Python 3.7 上使用betas了,在 Windows 上更好地支持外部錯誤處理,並支持 C 語言中更多的現代標準類型,例如 float/double _Complex 和 char16_t和char_32t 類型。最後兩個也是最重要的,在 C 庫中默認使用 Unicode 編碼。

何處下載 CFFI 1.11 ?

CFFI 下載地址:https://pypi.python.org/pypi/cffi,或通過 Python 的 pip 工具安裝:pip install cffi 。源碼和問題跟蹤可以在 BitBucket(https://bitbucket.org/cffi/cffi) 上找到。

Python 必備之 PyInstaller

PyInstaller 主要用於何處?

關於 Python 的最常見的問題之一是“如何從 Python 腳本中生成獨立的可執行文件?” PyInstaller 一直是對此最好的答案之一。

PyInstaller 3.3 的功能

PyInstaller 將 Python 應用程序打包到單目錄或單文件的可執行文件中,捆綁任何所需的第三方庫,並可與絕大多數常見的庫和框架配合使用。

PyInstaller 3.3 中最大的改進是對 Python 3.6 的支持,因為鑒於 Python 3.6 已經發布這確實是必要的。

PyInstaller 3.3 還包括一個更廣泛兼容的引導加載程序,適用於 Windows 可執行文件,並擴展了對捆綁常見庫(如 QT、GTK +、NumPy 和 Django )的支持。

PyInstaller 在不久之後可能添加的一個功能是交叉打包,例如,在 Windows 上創建 Mac 兼容的應用程序。你需要在要部署的同一平台上運行該 PyInstaller ,無論是 Windows、Mac 還是 Linux 。

何處下載 PyInstaller 3.3 ?

PyInstaller 下載地址:https://pypi.python.org/pypi/PyInstaller/3.3,也可通過 Python 的 pip 工具安裝:pip install pyinstaller 。對於那些需要自己編譯引導加載程序的人,源碼可以在 GitHub(https://github.com/pyinstaller/pyinstaller) 上找到,但對多數人而言是不需要這麼做的。

Python 必備之 Python Build Reasonableness (PBR)

Python PBR 主要用於何處?

Setuptools 是用於打包 Python 項目的標準的 Python 問題子係統。管理特定項目的 Setuptools 可能會變得非常繁瑣,特別是在自動生成需求、管理文檔文件或編輯項目貢獻者數據時。

Python PBR 的功能

PBR, Python Build Reasonableness 的縮寫,是以一致的方式用於管理 Setuptools 包的庫。它可以自動化許多 Setuptools 打包的設置,例如版本號、生成作者和 ChangeLog 文件,以及生成 Sphinx 風格的文檔。PBR 最初是作為 OpenStack 項目的一部分開發的,但現在你所使用 PBR 中維護的內容與 OpenStack 已經沒有任何聯係了。

哪裏可以下載 Python PBR ?

PBR 在 Python Package Index 上可以找到(https://pypi.python.org/pypi/pbr),並且可以和 pip 一起安裝,隻需要輸入 pip install pbr 即可。 源碼可在 GitHub(https://github.com/openstack-dev/pbr) 上下載。

Python 必備之 WxPython

WxPython 主要用於何處?

想要實現跨平台桌麵應用程序的 Python 開發人員可以從多個工具包中進行選擇。 WxPython,是 WxWidgets 庫的一個封裝,使用了其所支持主機平台的原生 UI 元素,包括 Windows、Mac、Linux 和其他類 Unix 操作係統。

WxPython 4.0 的功能

早期版本的 WxPython 被放棄了是由於其傳統的設計決策,使其變得越來越慢,而且不太適合使用。為了解決這個問題,WxPython 的開發人員對 WxPython 的 4.0 分支做了重大改變。

目標是允許開發人員更快地上手 WxPython ,並且使通過它創建的框架和應用程序更加高性能和易維護。然而,為了使用 WxPython 4.0 ,任何現有的使用 WxPython 項目都需要修改。

何處可以下載 WxPython 4.0 ?

WxPython 4.0 官方版本依然是 beta 版。它可以在 Python Package Index(https://pypi.python.org/pypi/wxPython/4.0.0b2) 上找到,即通過 pip install wxpython 命令。在正式發布前它可能會更新數次,注意經常檢查更新。

那些想直接破解的人可以查看 GitHub(https://github.com/wxWidgets/Phoenix) 上的代碼庫。請注意,WxPython 的 4.0 分支以 “Phoenix” 代號進行標記的,以使其與早期版本不同。

Python 必備之 Mypy

Mypy 主要用於何處?

Python 的動態性既是一種福音,也是一種煩惱,對於快速構建軟件非常棒,但是當代碼難以推理、測試和調試時,並不是很棒。Mypy 在編譯時向 Python 添加靜態類型檢查,使 Python 程序更加一致和可維護,並且不會增加運行時開銷。

Mypy 0.530 的功能

Mypy 0.530 添加了不同協議的支持,該協議是用於 Python 子類的目前實驗性類型的功能。它還在僅用於包含特定類型的對象的字典中添加 “TypedDict” 類型,並且可以逐個對文件進行更嚴格的類型檢查的選項。

哪裏可以下載 Mypy 0.530 ?

Mypy 下載地址:https://pypi.python.org/pypi/mypy,並通過 pip install mypy 來安裝。Mypy 可以通過 GitHub(https://github.com/python/mypy) 查看源碼。

-------- 熱聞回顧 --------

最後更新:2017-10-20 17:27:46

  上一篇:go Python 開發者的 6 個必備庫
  下一篇:go python學習之-is和=的區別