python2和python3的對比
效能
python3.x的效率低於python2.x, 但是python3.x有極大的優化空間, 正在追趕
編碼
python2.x
當直接輸入漢字的時候, 系統會報錯"SyntaxError: invalid syntax"
python3.x
原始碼檔案使用utf-8編碼,使得變數名更為廣闊
當直接輸入漢字的時候, 系統不會報錯
語法
關於不等於
python2.x: 可以使用"<>“和”!=“兩種
python3.x: 只保留了”!="
python3.x中加入了"as"和"with"關鍵字, 用於開啟檔案
整型觸發返回浮點數
python2.x: 執行 "5/3"得出結果為1, 如果想得出小數部分, 則需要把程式碼改成:“float(5)/float(3)”, 即加上型別.
python3.x: 執行"5/3"得出結果為1.666666, 如果只得到整數部分,則需要修改程式碼為:“5//3”, 即使用整除.
python3.x中加入了nonlocal語句
python3.x中去除了print語句, 加入了print()函式
python3.x去除了raw_input, 加入了input()函式
改變了順序操作符的行為, 例如x<y的時候, 當x和y的型別不匹配時, 返回結果不一樣:
python2.x: " 2<‘4’ ", 此時兩個變數的型別不同,但是此處返回的為bool值: True
python3.x: " 2<‘4’ ", 此時返回:“TypeError, ‘<’ not supported between int and str”
八進位制變數
python2.x: 數字前加0
python3.x: 數字前加0o
字串儲存型別
python2.x: 以8-bit儲存
python3.x: 以16-bit unicode儲存
資料型別
python3.x中去除了long型別
python3.x中新增了byte型別
str物件和bytes物件, 可以使用.encode()將str轉成bytes, decode可以將bytes轉換成str
面向物件
引入抽象基類
異常處理
所有異常都從BaseException繼承, 並且刪除了StandardError
#python2.x: try: ... except Exception, e: ... #python3.x: try: ... except Exception as e: .....
模組變動
python3.x中移除了cPickle模組, 使用pickle模組代替
其他改動
"xrange()“改為"range()”
mysql關聯
python2.x: 使用sqlite模組
python3.x: 使用pymysql模組