1. python3 對 unicode 字元的原生支援。
python2 中使用 ascii 碼作為預設編碼方式導致 string 有兩種型別 str 和 unicode,python3 只支援 unicode 的 string。
python3 預設str物件在python2中叫做 unicode ,
python3中字串與位元組之間相互轉換
a = b"hello, world!" # bytes object
b = 「hello, world!」 # str object
1.字串轉位元組 str --> bytes
print(str.encode(b)) # 預設 encoding=「utf-8」
print(bytes(b, encoding=「utf8」))
print(b.encode()) # 預設 encoding=「utf-8」
2.位元組轉字串 bytes --> str
print(bytes.decode(a)) # 預設encoding=「utf-8」
print(str(a, encoding=「utf-8」))
print(a.decode()) # 預設 encoding=「utf-8」
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. print 語句被 python3 廢棄,統一使用 print 函式
2. exec 語句被 python3 廢棄,統一使用 exec 函式
3. execfile 語句被 python3 廢棄,推薦使用exec(open("./filename").read())
4. 不相等操作符"<>「被 python3 廢棄,統一使用」!="
5. long 整數型別被 python3 廢棄,統一使用 int
6. xrange 函式被 python3 廢棄,統一使用 range,python3 中 range 的機制也進行修改並提高了大資料集生成效率
7. python3 中這些方法再不再返回 list 物件:dictionary 關聯的 keys()、values()、items(),zip(),map(),filter(),但是可以通過 list 強行轉換:
1. mydict=
2. mydict.keys() #3. list(mydict.keys()) #['a', 'c', 'b']
8. 迭代器 iterator 的 next()函式被 python3 廢棄,統一使用 next(iterator)
9. raw_input 函式被 python3 廢棄,統一使用 input 函式
11. file 函式被 python3 廢棄,統一使用 open 來處理檔案,可以通過 io.iobase 檢查檔案型別
13. 異常 standarderror 被 python3 廢棄,統一使用 exception
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...