python2和python3到底選誰?


為了提高生產力,用2.7

為了迎接未來,用3.x

不維護的東西多了去了,不維護不代表不能用。

等到需要用的框架支持3.x之後再轉,一點都不算晚。


感覺可以跟你用途劃分,如果快速上手後端,Python2會是目前大部分公司選擇的,不過應該很快會被Python3代替,Python2到2020年就停止支持了。老項目不大會升級,只會維護,新業務會開Python3。

如果搞AI可以上Python3,目前大部分庫在停止支持Python2,3會更普遍。

也不必太糾結學哪個好,根據目前的處境去選吧,即使以後從2過度到3也不會耗費多少精力。主要根據你目前的處境去選就行了。


你已經沒有可選擇性了,放棄P2吧,p3才是王道!


沒得選,py2馬上淘汰,主流庫已經跟上py3了。就如xp系統和win10,你選什麼。


瀉藥

月經帖啊,每過一段時間都會有這個問題。。。。。

Python2

大部分雲伺服器上現在默認的python版本還是2.

後期實踐上2轉3很方便的其實。區別在與各種包的支持,而包這個東西,還是看具體實施。

語法上從你初學的層面上其實沒什麼大區別

我的建議是學習2,然後在特定包的情況下,用用3,。反正就是環境變數切換的問題。


Python3整體的支持環境已經比較好了,而且Python2到2020年就停止維護啦。

請看倒計時:

Python 2.7 Countdown?

pythonclock.org

蛤蛤。


瀉藥

看你的目標是啥

如果你只是想用一次拉倒,那就用你順手的,同一種語言差別不應該很大

如果你是想生產用,嗯,那你就要小心一點了

breaking changes永遠是生產環境的大敵

從這一點上說,py這門語言生產用要有這個領悟


謝邀,跟上時代學新版本!


1. print不再是語句,而是函數,比如原來是 print abc 現在是 print(abc)但是 python2.6+ 可以使用 from __future__ import print_function 來實現相同功能

2. 在Python 3中,沒有舊式類,只有新式類,也就是說不用再像這樣 class Foobar(object): pass 顯式地子類化object但是最好還是加上. 主要區別在於 old-style 是 classtype 類型而 new-style 是 type類型

3. 原來1/2(兩個整數相除)結果是0,現在是0.5了python 2.2+ 以上都可以使用 from __future__ import division 實現改特性, 同時注意 // 取代了之前的 / 運算

4. 新的字元串格式化方法format取代%錯誤, 從 python2.6+ 開始已經在str和unicode中有該方法, 同時 python3依然支持 % 算符

5. xrange重命名為range同時更改的還有一系列內置函數及方法, 都返回迭代器對象, 而不是列表或者 元組, 比如 filter, map, dict.items 等

6. !=取代 &< &> python2 也很少有人用 &< &> 所以不算什麼修改

7. long重命名為int不完全對, python3 徹底廢棄了 long+int 雙整數實現的方法, 統一為 int , 支持高精度整數運算

8. except Exception, e變成except (Exception) as e只有 python2.5 及以下版本不支持該語法. python2.6 是支持的. 不算新東西

9. exec變成函數類似 print() 的變化, 之前是語句.

簡單補充下*

主要是類庫的變化, 組織結構變了些. 但功能沒變. urlparse - &> urllib.parse 這樣的變化* 最核心的變化它沒有說, 對 bytes 和 原生 UNICODE 字元串的支持, 刪除了 unicode 對象, str 為原生 unicode 字元串, bytes 替代了之前的 str 這個是最核心的.* 其它... 貌似不怎麼重要了.

python學習資料,交流討論可加群:308754087


推薦閱讀:

Python開發的十個Tips,你知道幾個?

TAG:Python | Python3x | Python庫 | Python入門 | Python開發 |