Python2 和 Python3 的區別

2021-10-01 12:03:51 字數 1299 閱讀 9337

在python 2中,「print」被視為語句而不是函式。儘管你可以,但你無需將要輸出的文字包裝在括號中。這可能令人困惑,因為python中的大多數其他操作都使用需要將引數放在括號內的函式。如果將括號放在要輸出的以逗號分隔的專案列表周圍,也會導致意外結果。

在python 3中,就明確的將「print」視為乙個函式,這意味著你必須以標準方式將需要輸出的專案傳遞給括號中的函式,否則你將收到語法錯誤。一些python 2程式設計師發現這種變化很煩人,但它可以幫助防止錯誤的發生。

python 2 將小數點後面沒有任何數字的數字視為整數,這可能會導致在除法期間出現意外結果。例如,如果在 python 2 **中輸入表示式:3/2,則評估結果將為1,而不是你所期望的1.5。

這是因為 python 2 會假設你希望除法的結果為整數,因此它將計算向下捨入到最接近的整數。為了獲得結果1.5,你必須編寫 3.0 / 2.0 來告訴 python,你希望它返回乙個浮點數,即在結果中包含小數點後面的數字。

python 3則會預設將 3/2 評估為 1.5,這對於新程式設計師來說有更直觀的感受。

在以前的python 2.x版本中,給出在列表推導中迭代的變數與全域性變數相同的名稱可能導致全域性變數的值被更改, 這通常不是你想要的。

在python 3中已經修復了這個煩人的錯誤。因此,你可以使用在列表理解中已經用於控制變數的變數名,而不必擔心它洩露並擾亂其餘**中變數的值。

預設情況下,python 3是將字串儲存為unicode,而如果python 2要將字串儲存為unicode,則要求使用「u」標記字串。unicode字串比ascii字串更通用,它們都是python 2的預設字串,因為它們可以儲存來自外語的字母以及表情符號和標準的羅馬字母和數字。如果要確保python 3**與python 2相容,你仍然可以使用「u」來標記unicode字串。

python 2和 python 3兩個版本的錯誤處理有乙個小的變化。

try

: trying_to_check_error

except nameerror, err:

# python3 中必須使用 as

# except nameerror as err:

print err,

'error caused'

# 不能在python 3中工作

python2 中有 long 型別,長整型數字後會有乙個 l

python3 中取消 long 型別,用 int 型別代替

python3 中不存在 python2 的 xrange();python3 的 range 就是 python2 的 xrange。

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...