1. 程式人生 > >(個人記錄)Python2 與Python3的版本區別

(個人記錄)Python2 與Python3的版本區別

字節 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的版本區別