全面解析 python2 與python3 區別

1、print函數

print 語句改成print函數,例如print "python2" ,python3中爲print("python3")

2、Unicode編碼

Python 2 有 ASCII str() 類型,unicode() 是單獨的,不是 byte 類型。

Python 3,有 Unicode (utf-8) 字符串,以及一個字節類:byte 和 bytearrays。源碼文件默認使用utf-8編碼。

3、除法運算

python中有兩種除法形式 / 和 // 。

python2中 / 除法的用法是,整數相除結果爲整數,捨棄小數部分。小數相除結果爲浮點小數類型。

python3中 / 除法的用法時,整數相除,結果也是浮點數,其他保持不變

// 除法的用法是,除後的結果執行floor操作。python2 和 3 保持一致

4、異常

python3 中捕獲異常的語法由 except exc, var 改爲 except exc as var ,使用語法except (exc1, exc2) as var可以同時捕獲多種類別的異常。

  • 1. 在2.x時代,所有類型的對象都是可以被直接拋出的,在3.x時代,只有繼承自BaseException的對象纔可以被拋出。
  • 2. 2.x raise語句使用逗號將拋出對象類型和參數分開,3.x取消了這種奇葩的寫法,直接調用構造函數拋出對象即可。

5、xrange

python3中沒有xrange函數,range函數實現了同樣的功能。

6、八進制表示方式

python2 中 0O1000 或者 01000,python3 中只有0O1000這一種形式。二進制是0b111,新增bin()函數將一個整數轉換成二進制串。

7、不等於 關係表達式

python2 不等於有兩種表達式 != 和 <>。

python3 中 <> 表達式被移除,只有 !=。

8、repr

Python 2.x 中反引號``相當於repr函數的作用

Python 3.x 中去掉了``這種寫法,只允許使用repr函數

9、以下模塊被改名

舊的名字 新的名字
_winreg winreg
ConfigParser configparser
copy_reg copyreg
Queue queue
SocketServer socketserver
repr reprlib

StringIO模塊現在被合併到新的io模組內。 new, md5, gopherlib等模塊被刪除。 Python 2.6已經支援新的io模組。

httplib, BaseHTTPServer, CGIHTTPServer, SimpleHTTPServer, Cookie, cookielib被合併到http包內。

取消了exec語句,只剩下exec()函數。

10、數據類型

1)Py3.X去除了long類型,現在只有一種整型——int,但它的行爲就像2.X版本的long

2)新增了bytes類型,對應於2.X版本的八位串,定義一個bytes字面量的方法如下:

str 對象和 bytes 對象可以使用 .encode() (str -> bytes) 或 .decode() (bytes -> str)方法相互轉化。

3)dict的.keys()、.items 和.values()方法返回迭代器,而之前的iterkeys()等函數都被廢棄。同時去掉的還有 dict.has_key(),用 in替代

11、標準鍵盤輸入input

在python3.x中raw_input()和input( )進行了整合,去除了raw_input(),僅保留了input()函數,其接收任意任性輸入,將所有輸入默認爲字符串處理,並返回字符串類型。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章