選擇 Python3.6 還是 Python 3.7

runfox545發表於2018-07-27

轉自: 白月黑羽線上教程:http://www.python3.vip/doc/blog/python/home/

選擇 Python3.6 還是 Python 3.7

Python 3.7 已經發布了,目前Python的使用者,主要使用的版本 應該是 Python3.6 和 Python2.7 ,那麼是不是該轉到 Python 3.7 呢?

首先大家要知道Python 3.7 是對 Python 3.6 的升級。Python官方對 3.7 的新特性描述連結如下:

https://docs.python.org/3/whatsnew/3.7.html

我們最需要注意的是 相對於 3.6 來說, 3.7 在語法上幾乎是完全 相容, 除了如下這一點:

Backwards incompatible syntax changes:

async and await are now reserved keywords.

  

這段話,指出了 3.7 的唯一不相容 3.6 的地方就是 async 和 await 變成了Python語言中保留的關鍵字了。

什麼意思?

就是 async 和 await 這兩個詞 就像 import, for, while 這些詞一樣, 是系統保留特殊用途的關鍵字。

也就是說在Python 3.7 裡面你不能使用定義 變數、函式之類的 名字

比如,我像下面這樣定義變數和函式:

async = 1
def await():
    pass

使用Python3.6 執行,沒有問題, 而在Python 3.7 裡面就會報如下錯誤

SyntaxError: invalid syntax

 

如何選擇?

所以,如果專案 目前使用的是 Python 3.6 ,而且專案又比較大的話,個人建議不用太著急轉到 3.7 上去。 因為不知道你的專案程式碼和依賴的第三方庫的程式碼是不是做過3.7的相容性測試, 畢竟 3.7 剛剛出來不久。

比如,白月黑羽寫這篇文章的時間是2018年7月13號,我就發現 postgresql 資料庫的Python API 驅動庫, psycopg2的安裝在 Python 3.7 上就有問題。

3.7 的 pip 執行

pip install psycopg2-binary

  

安裝就會失敗,提示 Error: pg_config executable not found

而 3.6的pip安裝就沒有問題。

所以,我們最好等到3.7被普遍使用了,再轉過去。

現在要轉到Python3.7, 除非 有你們專案特別渴望使用的 Python3.7 裡面的新特性 。 如果是那樣的話,一定要 做一個對老的程式碼覆蓋比較充分的測試,防止上線執行的時候出現問題。

 

用Python2.7怎麼辦呢?

而如果目前 專案使用的是 Python 2.7 執行,那 主要是 Python 2 和 Python 3 之間 的 遷移問題了, 語法差異有些大。

如果專案宣告週期比較長的話, 建議還是 要在合適的時候升級到 Python3。 因為畢竟Python2 在2020年官方就不再維護,到時候出現什麼安全漏洞之類的問題,就比較麻煩了。 或者是 有好用的第三方庫, 這些庫可能沒有 Python2 的版本,那樣就更麻煩了。

如果決定吧專案從Python2 升級到 Python3, 目前可以先升級到Python3.6 , 因為業界目前對 3.6 的支援還是比較普遍的。 等以後 3.7 支援比較普遍後,再做升級不遲。

 

轉自: 白月黑羽線上教程:http://www.python3.vip/doc/blog/python/2018071101/

相關文章