python2和python3差異總結

2021-09-02 05:42:58 字數 4092 閱讀 3374

專案馬上就要由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...