許多剛入門 python 的朋友都在糾結的的問題是:我應該選擇學習 python2 還是 python3,python 3.7 已經發布了,目前python的使用者,主要使用的版本 應該是 python3.6 和 python2.7 ,那麼是不是該轉到 python 3.7 呢?
首先先說一下python2與python3的選擇
許多剛入門 python 的朋友都在糾結的的問題是:我應該選擇學習 python2 還是 python3?
2. python 2 和 3 不相容,學了 3 還得學 2
錯!python 提供了許多輔助的庫,可以讓你分分鐘寫出相容 3 和 2 的**,你要做的只是引入幾個包而已,幾乎不用修改**。實在萬不得已非得用 2,你有 3 的基礎,幾乎不需要什麼額外的學習,也能立刻上手 2。
3. 許多庫還停留在 python 2,python 3 用不了
錯!說出這話的這位仁兄,你是有多久沒有關注 python?太不了解**了。
python3_readiness.png
其中,只剩下 15 個(大約 4%)庫暫時還不支援 python 3。你究竟是有多執著,非要等到 100% 才肯用 3?
你的工作能有多特別?非得用2才能搞定?即使真遇到這樣的情況,使用 virtualenv, conda 這些成熟的工具,分分鐘在你的機器上另起乙個 2 的環境,和 3 完美相容,你還需要擔心什麼?
擁抱 python 3 吧!人生苦短,我用 python 3。
選擇 python3.6 還是 python 3.7
python 3.7 已經發布了,目前python的使用者,主要使用的版本 應該是 python3.6 和 python2.7 ,那麼是不是該轉到 python 3.7 呢?
我們最需要注意的是 相對於 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 剛剛出來不久。
比如,白月黑羽寫這篇文章的時間是2023年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 在2023年官方就不再維護,到時候出現什麼安全漏洞之類的問題,就比較麻煩了。 或者是 有好用的第三方庫, 這些庫可能沒有 python2 的版本,那樣就更麻煩了。
如果決定吧專案從python2 公升級到 python3, 目前可以先公升級到python3.6 , 因為業界目前對 3.6 的支援還是比較普遍的。 等以後 3.7 支援比較普遍後,再做公升級不遲。
總結:
python3和python2的區別
1.效能 py3.0執行 pystone benchmark的速度比py2.5慢30 guido認為py3.0有極大的優化空間,在字串和整形操作上可 以取得很好的優化結果。py3.1效能比py2.5慢15 還有很大的提公升空間。2.編碼 py3.x原始碼檔案預設使用utf 8編碼,這就使得以下 是合...
Python2和Python3的比較
python2 python3 print fish print fish unicode 是單獨的 unicode utf 8 字串 b b china byte 和 bytearrays type b type bytes s b.decode 轉化成 string 型別b1 s encode ...
python3和python2的區別
這個星期開始學習python了,因為看的書都是基於python2.x,而且我安裝的是python3.1,所以書上寫的地方好多都不適用於python3.1,特意在google上search了一下3.x和2.x的區別。特此在自己的空間中記錄一下,以備以後查詢方便,也可以分享給想學習python的frie...