python2與python3的區別

2021-08-19 02:43:09 字數 1955 閱讀 9357

前記:python3對python2一些改變是:將一些內建函式由python2時返回列表變為python3返回迭代器(生成器)物件。python3對其改進的原因是迭代器的惰性求值特性(迭代器不會在它被繫結到變數之後就立即求值,而是等用到時再求值),這個特性可以解決一些巨大甚至無限的集合列表,如菲波那切數列、幾十g的檔案等等(記憶體開銷太大,非常容易爆),惰性求值可以解決這個問題。

1.print:

python2 print可以不加括號(為print語句);python3必須加括號(print為函式)。要在python2中以函式形式使用print,則應:from __future__ import print_function

2、input:

python2 分raw_input() 和input兩個函式,raw_input()使鍵盤輸入轉化為字串,而input()函式則不進行字串轉化;python3只有input()函式,作用是直接將鍵盤輸入轉化為字串。

3、dict字典操作:

python2中有has_key(key)來判斷字典中是否存在指定鍵,而python3中被__contains__(key)函式取代(用key in dict 更pythonic)

4、range():

python2 中range()返回乙個整數列表,xrange()返回的是迭代器物件。而python3中range()返回乙個整數序列物件(返回迭代器物件),可以使用list()函式轉換成列表型別

5、一些內建函式(map,filter等):

如map,filter等內建函式在python2中返回型別為列表,python3返回的是迭代器物件。

6、編碼:

python2使用asscii進行編碼(python誕生時還沒有utf-8),python3使用utf-8編碼。(具體編譯碼我也很混亂,先放放)

7、/除法:

python2除號「/」直接截斷除,如5/2=2,  若不想截斷除則應宣告from __future__ import division,這樣5/2=2.5;而python3 中除號「/」不發生截斷,如5/2=2.5,若想截斷除則應使用「//」,如5//2=2

8、容器資料型別屬性變化:

字典型別dict,在python2中的實現是基於hash表,所以是無序的,若要有序需要使用collections.ordereddict;而python3.6後改寫了字典的內部演算法,所以python3.6後是有序的(遵循的順序是key的插入順序。也就是說需要用一定順序插入才能獲得排好的結果,否則依然需要sort)。

9、(新式類繼承)子類繼承父類方法的super():

python2.* 的呼叫方式為 super(class[, object or type]).method()例如 b類繼承a類 在b類中繼承方式為 super(b, self).a_method();而python3.*的呼叫方式可以直接寫為 super().method()   

10、一些第三方包的差異(如pil與pillow;pickle序列化的不相容)

在第三方包的差異上,以pil和pillow為例,pil為python2.x的影象包,該包日久失修,在python3.x中便不再支援,大家開發了可相容python2pil的pillow。(不過無論是pil還是pillow在程式import時都是import pil);python2使用cpickle,而python3使用pickle,且將pickle整合到了python3 的標準庫中(互相直接讀取生成的序列化檔案不相容,需要處理,如python3 load python2 序列化出的資料時,在load時指定latin1編碼:pickle.load(file_handle,encoding='latin1'),其中file_handle是通過二進位制讀的方式讀取的)。

11、資料型別的差異(長整型)

在python2中如果數字很大會自動由int型別轉為long型別,或者在數字後加l(如199l)定義long整型,而python3中python 3裡,只有一種整數型別 int,它本身表示為長整型。

Python 2 與Python 3的區別

1.除號 與整除號 python 2中,是整除 python 3中,是常規除法,是整除 2.raw input與input python 2用raw input python 3用input 都表示輸入函式。3.print與print 以及逗號 python 2中,print my print na...

Python3 與 Python2 的不同

至於學習 python3 和 python2,我了解到的觀點是這樣的。1 現在很多的專案都還是在用 python2,學習 python2 還是有意義的 2 python2 在 python 的官方已經公布了在什麼什麼時間停止維護,所以對於新手來說,學習 python2 的價值不是很大,所以直接 py...

Python2 與Python3 的區別

1.print函式 py2中print是乙個語法結構,如 print value py3中print是乙個函式,如 print value 2.除法運算 py2中兩個整數除法得到的是0,要想得到浮點數結果,則被除數或除數二者要有乙個是浮點數才行。如 print 1 4 0 print 1 4.0.2...