專案馬上就要由python2遷移到python3環境所有就簡單總結下區別,個人覺得這些差不多,詳情見如下吧
python2 中使用 ascii 碼作為預設編碼方式導致 string 有兩種型別 str 和 unicode,python3 只 支援 unicode 的 string。python2 和 python3 位元組和字元對應關係為:
python2 中相對路徑的 import 會導致標準庫匯入變得困難(想象一下,同一目錄下有 file.py,如 何同時匯入這個檔案和標準庫 file)。
python3 中這一點將被修改,如果還需要匯入同一目錄的檔案必 須使用絕對路徑,否則只能使用相關匯入的方式來進行匯入。
python3統一採用新式類。新式類宣告要求繼承object, 必須用新式類應用多重繼承
python2 的縮排機制中,1 個 tab 和 8 個 space 是等價的,所 以在縮排中可以同時允許 tab 和 space 在**中共存。這種等價機制會導致部分 ide 使用存在問題。
python3 中 1 個 tab 只能找另外乙個 tab 替代,因此 tab 和 space 共存會導致報錯:taberror: inconsistent use of tabs and spaces in indentation
exec 語句被 python3 廢棄,統一使用 exec 函式
. execfile 語句被 python3 廢棄,推薦使用 exec(open("./filename").read())
不相等操作符"<>"被 python3 廢棄,統一使用"!="
long 整數型別被 python3 廢棄,統一使用 int
xrange 函式被 python3 廢棄,統一使用 range,python3 中 range 的機制也進行修改並提高 了大資料集生成效率
raw_input 函式被 python3 廢棄,統一使用 input 函式
異常 standarderror 被 python3 廢棄,統一使用 exception
file 函式被 python3 廢棄,統一使用 open 來處理檔案,可以通過 io.iobase 檢查檔案型別
迭代器 iterator 的 next()函式被 python3 廢棄,統一使用 next(iterator)
python3 中這些方法再不再返回 list 物件:dictionary 關聯的 keys()、values()、items(),zip(), map(),filter(),但是可以通過 list 強行轉換:
python3將python2中的urllib2、urlparse、robotparser併入了urllib模組,並且修改了urllib模組,其中包含了5個子模組,每個子模組中的常用方法如下:
模組名常用方法
python2:若為兩個整形數進行運算,結果為整形,但若兩個數中有乙個為浮點數,則結果為 浮點數;
python3:為真除法,運算結果不再根據參加運算的數的型別。
「//」:
python2:
返回小於除法運算結果的最大整數;從型別上講,與"/"運算子返回型別邏輯一致。
python3:和 python2 運算結果一樣。
python2
raise ioerror, "file error" #丟擲異常
except nameerror, err: #捕捉異常
python3
raise ioerror("file error") #丟擲異常
except nameerror as err: #捕捉異常
python2,for 迴圈會修改外部相同名稱變數的值
i = 1
print ('comprehension: ', [i for i in range(5)])
print ('after: i =', i ) #i=4
python3,for 迴圈不會修改外部相同名稱變數的值
i = 1
print ('comprehension: ', [i for i in range(5)])
print ('after: i =', i
python2,round 函式返回 float 型別值
>>> isinstance(round(15.5),float)
true
>>> round(15.5)
16.0
python3,round 函式返回 int 型別值
>>> isinstance(round(15.5),int)
true
>>> round(15.5)
16
python2 中任意兩個物件都可以比較
>>> 11 < 'test'
true
python3 中只有同一資料型別的物件可以比較
>>> 11 < 'test'
file "", line 1
11 < 'test'
^indentationerror: unexpected indent
python2 無法安裝 mysqlclient。
python2 無法安裝 mysql-python 和 mysqlclient 包,報錯:environmenterror: mysql_config not found,解決方案是安裝 mysql-devel 包解決。使用 matplotlib 報錯:no module named _tkinter, 安裝 tkinter、tk-devel、tc-devel 解決。 pywin32 也無法在 centos 環境下安裝。
python3與python2有哪些區別?
和羞走,倚門回首,卻把青梅嗅。 ------李清照
python3和python2的區別
1.效能 py3.0執行 pystone benchmark的速度比py2.5慢30 guido認為py3.0有極大的優化空間,在字串和整形操作上可 以取得很好的優化結果。py3.1效能比py2.5慢15 還有很大的提公升空間。2.編碼 py3.x原始碼檔案預設使用utf 8編碼,這就使得以下 是合...
Python2和Python3的比較
python2 python3 print fish print fish unicode 是單獨的 unicode utf 8 字串 b b china byte 和 bytearrays type b type bytes s b.decode 轉化成 string 型別b1 s encode ...
python3和python2的區別
這個星期開始學習python了,因為看的書都是基於python2.x,而且我安裝的是python3.1,所以書上寫的地方好多都不適用於python3.1,特意在google上search了一下3.x和2.x的區別。特此在自己的空間中記錄一下,以備以後查詢方便,也可以分享給想學習python的frie...