為什麼你會遷移到Python3.5 ?

pythontab發表於2016-07-11

為什麼,真的需要嗎?對於任何一門流行程式語言的開發者來說,新版本的釋出絕對是一個令人激動的時刻.


2015年9月份Python3.5的釋出帶來了類似的反應.Python3.5在自身已經被使用的特性基礎上,混合了其他流行語言的新特性.這些特性在不繫結新語法的情況下,能讓你減少專案中的程式碼量和寫bug的機會,並且提高程式的安全性.

Python的統計

許多Python專家仍然把Python2.7視為標準的穩定版本.但這並不代表之後的python版本沒有在業界被大量使用.randalolson.com的各次統計資訊表明,從2013至2014年,使用Python3開發者的佔比從60%升至72%.你可能會認為上述兩年的統計資料中,使用3.4版本的開發者當中還有81%的開發人員仍舊把2.7版本視為經常主要使用的版本.但在調查期間,有大約12%和5%的開發人員在經常使用3.4和3.2版本.這可以得出一個合乎邏輯的推論:讓業界廣泛使用程式語言的新版本需要時間.當開發人員對python3.5的需求增加時,3.5版本也將會得到大範圍使用.


為什麼是Python3.5?


歸根到底,人們對一個語言的新版本的要求是減少bug,改善效能的同時提高標準庫,語法方面的特性以及安全性.就像Python工具專家Steve Dower在影片提到的一樣,Python3.5中的許多改變,是聽取了Python的開發人員,或者Python的愛好者在各種Python論壇上分享出來的許多建議或想法的結果.


下面是一些重要的更新內容:


矩陣乘法運算子


以前僅限於一些科學計算庫,如NumPy的實現矩陣乘法功能的二元運算子“@” ,現在已經在python3.5被直接支援了.這允許矩陣部分的程式碼更短更簡潔.使用python3.5進行有關工學或者數學方面的程式設計時將能從這項特性中獲取大量優勢.Python現在已經廣泛而有效應用在上述領域的軟體中,這項新特性接下來會獲得很高的評價.將運算子@作為矩陣運算的標準語法,程式碼將變得更加易讀緊湊.而即將釋出的NumPy release版本中的快速矩陣乘法功能也將會促進@的使用.


協程(非同步和阻塞)


為了推動更多易用的非同步程式設計模型的使用,async和await語法將會對協程提供更多的支援.作為關鍵字,async允許函式執行起來想協程一樣,同時await作為關鍵字將會暫停協程的執行.透過編寫序列執行的程式碼來執行併發程式將會是主要的優勢所在,這將使得新的python開發人員更容易理解協程的概念,增加了開發人員的多樣性.總的來說,async/await函式意味著一個新的語法非同步解決方案,而這僅僅需要你遵循Python一直以來的用法即可.


解包


透過函式呼叫在許多地方使用解包已經成為可能.早期版本有一些雞肋的限制,不利於程式碼的可讀性.解包操作擴大了詞典和迭代器的使用.一些序列的值透過逗號的分隔就能表示對它進行解包.之前只允許在表示式的左邊進行解包,而新特性將允許你在表示式的右邊做同樣的操作.通用型的解包可以用更少的程式碼得出你想要的結果.


型別約束以及Zipapp


Python之父Guido van Rossum非常倡導型別約束.透過型別約束去註釋變數是所有開發者都在期待的特性.型別約束的目標是為了讓Python更多得被編譯成”離線解析”的方式.型別註釋上各種工具的新增和基本定義就是為了能夠達到這個目的.同樣,把規則寫進註釋裡是沒意義的,新的模組zipapp允許開發者透過API和獨有的命令列工具,在可執行的python zip應用上進行操作.透過這個新模組來進行應用繫結將會變得更加容易,只要將所有的檔案,包括__main__.py檔案放到myapp的目錄,然後執行該檔案即可。


其他特性以及改進


1.python3.5中其他提高對程式碼可讀性方面的改進措施,還有對bytes的bytearrys型別的資料增加了%格式化的支援.在之前的版本中,實現同樣的功能會降低程式碼的可讀性.這也就是為什麼說讓%格式化繼續符留著是一項明智的舉措.


2.現在你可以在ArgumentParser類中對那些長選項禁用簡略寫法.你所需要做只需要將allow_abbrev設定為False即可


3.處於臨時狀態的asyncio模組有一個顯著的變化就是可以透過呼叫一些新的debugging API以支援SSL.新的queue函式包括Queue.task_done和Queue.join.ensure_future,他們已經取代了async函式,而其他方面的變化倒不是不大.


遷移到Python 3.5


這裡沒有設定遷移到Python3.5最新版本的固定方法.同專案的程式碼架構和版本要求一樣,應該在編寫程式碼時就考慮這件事.舉個例子,如果一個新的版本Python版本包含了新的中括號用法,同樣也應該考慮在編寫程式碼時就考慮使用這種新用法.一些工具透過定義程式碼的變化,修改和測試相同的功能,也能顯著幫助開發者節省過渡的時間.


相關文章