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()函數,其接收任意任性輸入,將所有輸入默認爲字符串處理,並返回字符串類型。