對於初學者來說,只知道
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 這個是最核心的.