一文告知選擇Python2和Python3的區別

來源:互聯網
上載者:User
對於初學者來說,只知道 python2和Python3是兩代版本,但並不知道兩代版本之間有哪些差別,本文就來介紹 Python2和Python3的區別。

print不再是語句,而是函數,比如原來是 print 'abc' 現在是 print('abc')

但是 python2.6+ 可以使用 from __future__ import print_function 來實現相同功能:

#py2print("hello")#等價print(“hello”)#py3print("hello")

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


原來1/2(兩個整數相除)結果是0,現在是0.5了


python 2.2+ 以上都可以使用 from __future__ import division 實現改特性, 同時注意 // 取代了之前的 / 運算
新的字串格式化方法format取代%錯誤, 從 python2.6+ 開始已經在str和unicode中有該方法, 同時 python3依然支援 % 算符

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


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

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


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


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

* 主要是類庫的變化, 組織圖變了些. 但功能沒變. urlparse - > urllib.parse 這樣的變化
* 最核心的變化它沒有說, 對 bytes 和 原生 UNICODE 字串的支援, 刪除了 unicode 對象, str 為原生 unicode 字串, bytes 替代了之前的 str 這個是最核心的.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.