(個人記錄)Python2 與Python3的版本區別
阿新 • • 發佈:2018-01-30
字節 title border idt == 編碼 補全 默認 異常信息
現在還有些開源模塊還沒有更新到python3 ,不了解版本區別,無法對不合適的地方進行更改。
由於只追求向Python3靠近,所以對於python2的特別用法不探究。
此文不補全所有版本區別,僅作檔案記錄我遇到的版本區別.
print函數:
在 Python 2 中, print 被視為一個語句而不是一個函數
更改:
Python 2中的print語句==>Python 3中的print()函數
input():
python2的raw_input()更新為Python 3 中的input()
整數除法:
更新:
由py2中的舍去小數的除法==》py3中的計算比較精確的除法
如果py3中想要不保留小數,使用 // 運算符
但要註意小數中//運算符的使用,//是返回比實際的商要小的數。
Unicode編碼:
- 1.Python 2中的字符串基於ASCII
- 2.Python 3 默認使用 Unicode,Python3中的字符串類型默認是unicode類型的,另外新增了兩個字節類:bytes和bytearrays
- Byte的使用:
- str對象轉換成bytes對象可以使用encode()
- bytes對象轉換成str對象使用decode()
- Python中對bytes類型的數據帶
b
- 由於編碼變化還導致了python中網絡編程函數使用的變化,網絡傳輸都是字節流的,Python2的網絡傳輸默認是字節型的,而python3中字符串是Unicode的,所以python3要對數據進行編碼再傳輸。
不等運算符
Python 2.x中不等於有兩種寫法 != 和 <>
Python 3.x中去掉了<>, 只有!=一種寫法
現在仍有一些教程保留著<>的用法!
處理異常:
捕獲異常的語法由 except exception, variable 改為 except exception as variable
python3中將一些異常細化了,新增了不少異常
拋出異常:
更新:
py3使用構造函數拋出異常
raise 異常名, "自定義的異常信息"
raise 異常名("自定義的異常信息")
生成器的叠代:
python2中支持 生成器.next()
更新為
python3中的next(生成器),生成器.__next__()
(個人記錄)Python2 與Python3的版本區別