python2和python3應(yīng)該學(xué)哪個(gè)(python3.6與python3.7的選擇)
首先先說(shuō)一下python2與python3的選擇
許多剛?cè)腴T(mén) Python 的朋友都在糾結(jié)的的問(wèn)題是:我應(yīng)該選擇學(xué)習(xí) python2 還是 python3?
對(duì)此,回答是:果斷 Python3 !(推薦學(xué)習(xí):Python視頻教程)
可是,還有許多小白朋友仍然猶豫:那為什么還是有人推薦我學(xué)習(xí) Python2 呢?
其實(shí),無(wú)外乎以下一些原因:
1. 無(wú)論是 Python 還是 Pip 的下載量,都是 2 比 3 多,可見(jiàn) 2 仍然是主流
錯(cuò)!造成 2 的下載量比 3 多的原因很多,但其中很重要的一條是,絕大多數(shù)操作系統(tǒng)(Linux 發(fā)行版)默認(rèn)安裝的仍然是 Python 2。人都是有惰性的,許多人懶得折騰就直接用了2 了。但是,2 在下降,3 在上升這是不爭(zhēng)的事實(shí)。擁抱未來(lái)才是王道啊。
2. Python 2 和 3 不兼容,學(xué)了 3 還得學(xué) 2
錯(cuò)!Python 提供了許多輔助的庫(kù),可以讓你分分鐘寫(xiě)出兼容 3 和 2 的代碼,你要做的只是引入幾個(gè)包而已,幾乎不用修改代碼。實(shí)在萬(wàn)不得已非得用 2,你有 3 的基礎(chǔ),幾乎不需要什么額外的學(xué)習(xí),也能立刻上手 2。
3. 許多庫(kù)還停留在 Python 2,Python 3 用不了
錯(cuò)!說(shuō)出這話的這位仁兄,你是有多久沒(méi)有關(guān)注 Python?太不了解行情了。
根據(jù) py3readiness 的最新統(tǒng)計(jì)結(jié)果,Pip 上最流行的(下載量最高的)前 360 個(gè)庫(kù),已經(jīng)有345 個(gè)支持 Python 3 了
python3_readiness.png
其中,只剩下 15 個(gè)(大約 4%)庫(kù)暫時(shí)還不支持 Python 3。你究竟是有多執(zhí)著,非要等到 100% 才肯用 3?
你的工作能有多特別?非得用2才能搞定?即使真遇到這樣的情況,使用 virtualenv, conda 這些成熟的工具,分分鐘在你的機(jī)器上另起一個(gè) 2 的環(huán)境,和 3 完美兼容,你還需要擔(dān)心什么?
擁抱 Python 3 吧!人生苦短,我用 Python 3。
選擇 Python3.6 還是 Python 3.7
Python 3.7 已經(jīng)發(fā)布了,目前Python的用戶,主要使用的版本 應(yīng)該是 Python3.6 和 Python2.7 ,那么是不是該轉(zhuǎn)到 Python 3.7 呢?
首先大家要知道Python 3.7 是對(duì) Python 3.6 的升級(jí)。Python官方對(duì) 3.7 的新特性描述鏈接如下:
https://docs.python.org/3/whatsnew/3.7.html
我們最需要注意的是 相對(duì)于 3.6 來(lái)說(shuō), 3.7 在語(yǔ)法上幾乎是完全 兼容, 除了如下這一點(diǎn):
Backwards incompatible syntax changes:
async and await are now reserved keywords.
這段話,指出了 3.7 的唯一不兼容 3.6 的地方就是 async 和 await 變成了Python語(yǔ)言中保留的關(guān)鍵字了。
什么意思?
就是 async 和 await 這兩個(gè)詞 就像 import, for, while 這些詞一樣, 是系統(tǒng)保留特殊用途的關(guān)鍵字。
也就是說(shuō)在Python 3.7 里面你不能使用定義 變量、函數(shù)之類的 名字
比如,我像下面這樣定義變量和函數(shù):
async = 1 def await(): pass
使用Python3.6 運(yùn)行,沒(méi)有問(wèn)題, 而在Python 3.7 里面就會(huì)報(bào)如下錯(cuò)誤
SyntaxError: invalid syntax
如何選擇?
所以,如果項(xiàng)目 目前使用的是 Python 3.6 ,而且項(xiàng)目又比較大的話,個(gè)人建議不用太著急轉(zhuǎn)到 3.7 上去。 因?yàn)椴恢滥愕捻?xiàng)目代碼和依賴的第三方庫(kù)的代碼是不是做過(guò)3.7的兼容性測(cè)試, 畢竟 3.7 剛剛出來(lái)不久。
比如,白月黑羽寫(xiě)這篇文章的時(shí)間是2018年7月13號(hào),我就發(fā)現(xiàn) postgresql 數(shù)據(jù)庫(kù)的Python API 驅(qū)動(dòng)庫(kù), psycopg2的安裝在 Python 3.7 上就有問(wèn)題。
3.7 的 pip 執(zhí)行
pip install psycopg2-binary
安裝就會(huì)失敗,提示 Error: pg_config executable not found
而 3.6的pip安裝就沒(méi)有問(wèn)題。
所以,我們最好等到3.7被普遍使用了,再轉(zhuǎn)過(guò)去。
現(xiàn)在要轉(zhuǎn)到Python3.7, 除非 有你們項(xiàng)目特別渴望使用的 Python3.7 里面的新特性 。 如果是那樣的話,一定要 做一個(gè)對(duì)老的代碼覆蓋比較充分的測(cè)試,防止上線運(yùn)行的時(shí)候出現(xiàn)問(wèn)題。
用Python2.7怎么辦呢?
而如果目前 項(xiàng)目使用的是 Python 2.7 運(yùn)行,那 主要是 Python 2 和 Python 3 之間 的 遷移問(wèn)題了, 語(yǔ)法差異有些大。
如果項(xiàng)目聲明周期比較長(zhǎng)的話, 建議還是 要在合適的時(shí)候升級(jí)到 Python3。 因?yàn)楫吘筆ython2 在2020年官方就不再維護(hù),到時(shí)候出現(xiàn)什么安全漏洞之類的問(wèn)題,就比較麻煩了。 或者是 有好用的第三方庫(kù), 這些庫(kù)可能沒(méi)有 Python2 的版本,那樣就更麻煩了。
如果決定吧項(xiàng)目從Python2 升級(jí)到 Python3, 目前可以先升級(jí)到Python3.6 , 因?yàn)闃I(yè)界目前對(duì) 3.6 的支持還是比較普遍的。 等以后 3.7 支持比較普遍后,再做升級(jí)不遲。
腳本之家小編補(bǔ)充:最近學(xué)習(xí)python看了很多python3的文章都是推薦用python3.6,大家一起動(dòng)起來(lái)吧。
相關(guān)文章
opencv 形態(tài)學(xué)變換(開(kāi)運(yùn)算,閉運(yùn)算,梯度運(yùn)算)
這篇文章主要介紹了opencv 形態(tài)學(xué)變換(開(kāi)運(yùn)算,閉運(yùn)算,梯度運(yùn)算),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07淺談Python中用datetime包進(jìn)行對(duì)時(shí)間的一些操作
下面小編就為大家?guī)?lái)一篇淺談Python中用datetime包進(jìn)行對(duì)時(shí)間的一些操作。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-06-06使用Python發(fā)送郵件附件以定時(shí)備份MySQL的教程
這篇文章主要介紹了使用Python發(fā)送郵件附件以定時(shí)備份MySQL的教程,本文的示例基于CentOS,需要的朋友可以參考下2015-04-04利用Python自動(dòng)監(jiān)控網(wǎng)站并發(fā)送郵件告警的方法
這篇文章介紹的是通過(guò)定時(shí)執(zhí)行python腳本,可以實(shí)現(xiàn)定期批量訪問(wèn)網(wǎng)站,如果發(fā)現(xiàn)網(wǎng)站打不開(kāi),第一時(shí)間發(fā)郵件到管理員郵箱進(jìn)行預(yù)警。有需要的可以參考借鑒。2016-08-08pytorch查看通道數(shù) 維數(shù) 尺寸大小方式
這篇文章主要介紹了pytorch查看通道數(shù) 維數(shù) 尺寸大小方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05