我先拋出我的觀點,不要讓你的思維遷就于你的工具,而是讓你的工具遷就于你的思維!
python2和python3,從他們實現(xiàn)的精髓而言,其實真的沒有太多本質(zhì)的區(qū)別,我目前所感知的python3與python2的最大差別在于:
- python3的range相當于python2的xrange。
- python3對于iterable(可迭代)對象全部采用惰性取數(shù)的原則,也就是在用的時候才去取數(shù),比如range (10)是一個range可迭代對象,而不是一個列表。一般如果要將可迭代對象迭代出,那么再對象外套一個list()就可以實現(xiàn)了(這種情況再使用map函數(shù)尤為明顯,你必須這樣套用list(map(...)))循環(huán)出map的內(nèi)容)。
- 對于生成器取消其next方法,next直接生格為內(nèi)置函數(shù)的級別。也就是對于生成器a,要循環(huán)出第1個元素,python2可以用a.next(), 但是這在python3會報錯,需改用next(a)。
- python3采用unicode編碼,解決了python2上很多的亂碼問題。
- python2將于2020年停止更新。
- python3的print()必須加后面的括號。
上面講的好像想表達python3優(yōu)于python2, 新手入門應(yīng)該優(yōu)先選擇python3。
但是這不是我的最終意愿,我其實更想表達的是,這只是他們的一些細微上面的差別,對于新手入門來說,他們其實只是會造成些微的困擾而已?。?!
你究竟應(yīng)該選擇python2還是python3,應(yīng)該取決你所選定的那本教材使用的是哪一個版本的python!
比如,learn python the hard way和利用python進行數(shù)據(jù)分析, 他們用的python版本是2,所以如果你是初學(xué)者的話,你應(yīng)該優(yōu)先選擇python2,這樣子可以最大程度的避免你剛?cè)腴T時候的,雖然你敲了一模一樣的代碼,但還是報錯的困擾和挫折感。至于那些對這些困擾不在乎,可以自己搜索答案解決問題的同學(xué)來說,他們即使是用python3來運行書中的代碼也是ok的,因為畢竟2個版本的差別并沒有那么大!
最后,講一下我的python版本使用,我入門是用的python 2.7, 入門書是learn python the hard way以及廖雪峰的python2.7教程,上的MITx 6.00.1x還有后來學(xué)習的利用python進行數(shù)據(jù)分析都是用的是python2.7,但是我現(xiàn)在則主要用python3,主要是這樣子遇到亂碼的幾率會比較小,而且我用的那些包,如numpy, pandas, requests, bs4, scrapy等等都有python3的版本了。此外,當你對python熟悉到一定程度其實這個版本轉(zhuǎn)換的成本是很小的!
愿你看了本文后,不會再對python版本的選擇問題產(chǎn)生糾結(jié)!
祝生活愉快!
凡星
2017.05.17