python2和python3的區別
- 2020 年 1 月 14 日
- 筆記
1、不等於<>比較運算符,python3不識別,pyhon2.7中!=和<>都能運行。
2、print函數的使用,python3必須加括弧,python2加不加都行。
3、py2 的默認編碼是ASCII,py3的默認編碼是UTF-8。
4、py3字元串解碼後會在記憶體里自動轉換成Unicode,而py2不會。如果在文件頭指定了解碼編碼,py2和py3都會按指定解碼,所有系統都支援Unicode,所以py3隻要指定對了解碼編碼,在哪個系統上都可以正常顯示,py2如果不是gbk編碼的,解碼後windous就會是亂碼。
5、py2中有Unicode數據類型,py3中沒有,字元串都是Unicode格式的str數據類型。
6、py2中bytes可以是二進位,也可以是str,py3中bytes只是十六進位表示的二進位。
7、py2中有long類型數據,py3中沒有,py2中int最大值是-2**31~2**31-1超過在後面加L轉換為long型。(直接運算會顯示long型,因為2**31會先運算,是long型)
8、用戶輸入不同,py3中只有input()輸出都是str和py2中的raw_input()一樣,而py2中也有input(),輸入字元串要帶引號,數字輸出相應的數字類型
9、Py2以前沒有布爾型,0表示False,用1表示True;Python3 把 True 和 False 定義成關鍵字,它們的值還是 1 和 0,可以和數字運算。
10、py2中range()直接生成列表(量大占記憶體死機),py3中只有range()和py2中還有的xrang()都只生成一個生成器(一個計算方法,不佔記憶體)。
11、py2的除法中不是浮點數則只返回商,py3除法返回值正常。
12、py3運行程式可以識別相同目錄下普通文件夾中的模組,py2隻能識別文件夾標識後的包中的模組。
13、創建類時,py2分為經典類和新式類,新式類就是繼承object的類,經典類是沒有繼承的類,而py3中全部是新式類,默認繼承object。在屬性查找時,經典類查找方式為深度優先,新式類是廣度優先。僅py3中有類的mro函數方法,輸出繼承父類的順序列表。
14、重用父類屬性的super()使用方法不同,py2中super()需要輸入本身類名和自身作為參數,而py3中不用輸入參數,可以直接使用替代上一級父類。