轉自: 白月黑羽在線教程: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/