一、核心類差異
1. python3 對 unicode 字元的原生支援。
python2 中使用 ascii 碼作為預設編碼方式導致 string 有兩種型別 str 和 unicode,python3 只
支援 unicode 的 string。python2 和 python3 位元組和字元對應關係為:
2. python3 採用的是絕對路徑的方式進行 import
python2 中相對路徑的 import 會導致標準庫匯入變得困難(想象一下,同一目錄下有 file.py,如
何同時匯入這個檔案和標準庫 file)。python3 中這一點將被修改,如果還需要匯入同一目錄的檔案必
須使用絕對路徑,否則只能使用相關匯入的方式來進行匯入。
3. python2 中存在老式類和新式類的區別,python3 統一採用新式類。新式類宣告要求繼承 object,
必須用新式類應用多重繼承。
4. python3 使用更加嚴格的縮排。python2 的縮排機制中,1 個 tab 和 8 個 space 是等價的,所
以在縮排中可以同時允許 tab 和 space 在**中共存。這種等價機制會導致部分 ide 使用存在問題。
python3 中 1 個 tab 只能找另外乙個 tab 替代,因此 tab 和 space 共存會導致報錯:taberror:
inconsistent use of tabs and spaces in indentation.
三 、修改類差異
1. 浮點數除法操作符「/」和「//」的區別
「 / 」:
python2:若為兩個整形數進行運算,結果為整形,但若兩個數中有乙個為浮點數,則結果為
浮點數;
python3:為真除法,運算結果不再根據參加運算的數的型別。
「//」:
python2:返回小於除法運算結果的最大整數;從型別上講,與"/"運算子返回型別邏輯一致。
python3:和 python2 運算結果一樣。
2. 異常丟擲和捕捉機制區別
python2
1. raise ioerror, "file error" #丟擲異常
2. except nameerror, err: #捕捉異常
python3
1. raise ioerror("file error") #丟擲異常
2. except nameerror as err: #捕捉異常
3. for 迴圈中變數值區別
python2,for 迴圈會修改外部相同名稱變數的值
1. i = 1
2. print ('comprehension: ', [i for i in range(5)])
3. print ('after: i =', i ) #i=4
python3,for 迴圈不會修改外部相同名稱變數的值
1. i = 1
2. print ('comprehension: ', [i for i in range(5)])
3. print ('after: i =', i ) #i=1
4. round 函式返回值區別
python2,round 函式返回 float 型別值
1. isinstance(round(15.5),int) #true
python3,round 函式返回 int 型別值
1. isinstance(round(15.5),float) #true
5. 比較操作符區別
python2 中任意兩個物件都可以比較
1. 11 < 'test' #true
python3 中只有同一資料型別的物件可以比較
1. 11 < 'test' # typeerror: unorderable types: int() < str()
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...