python2和python3的區(qū)別

1.print

  • print語句沒有了,取而代之的是print()函數(shù)。
python2 print "fish" 
python3 print("fish")

2.Unicode

python2默認(rèn)是 ASCII str() 類型,python3默認(rèn)Unicode類型即utf-8

python2中
>>> str = "我愛北京天安門"
>>> str
'\xe6\x88\x91\xe7\x88\xb1\xe5\x8c\x97\xe4\xba\xac\xe5\xa4\xa9\xe5\xae\x89\xe9\x97\xa8'
>>> str = u"我愛北京天安門"
>>> str
u'\u6211\u7231\u5317\u4eac\u5929\u5b89\u95e8'

python3中
>>> str = "我愛北京天安門"
>>> str
'我愛北京天安門'

3.除法運(yùn)算

python2中的除法
>>> 1 / 2
0
>>> 1.0 / 2.0
0.5
python3中的除法
>>> 1/2
0.5

4.異常

在 Python 3 中處理異常也輕微的改變了,在 Python 3 中我們現(xiàn)在使用 as 作為關(guān)鍵詞。

捕獲異常的語法由 except exc, var 改為 except exc as var。

使用語法except (exc1, exc2) as var可以同時(shí)捕獲多種類別的異常。 Python 2.6已經(jīng)支持這兩種語法。

  1. 在2.x時(shí)代,所有類型的對象都是可以被直接拋出的,在3.x時(shí)代,只有繼承自BaseException的對象才可以被拋出。
  2. 2.x raise語句使用逗號將拋出對象類型和參數(shù)分開,3.x取消了這種奇葩的寫法,直接調(diào)用構(gòu)造函數(shù)拋出對象即可。
    在2.x時(shí)代,異常在代碼中除了表示程序錯(cuò)誤,還經(jīng)常做一些普通控制結(jié)構(gòu)應(yīng)該做的事情,在3.x中可以看出,設(shè)計(jì)者讓異常變的更加專一,只有在錯(cuò)誤發(fā)生的情況才能去用異常捕獲語句來處理。

5. xrange

python3中由range代替了xrange,在三中xrange會報(bào)錯(cuò)。

6.數(shù)據(jù)類型

python3去除了long類型,現(xiàn)在只有一種整型——int。

7.input

python3中input輸入的數(shù)據(jù),統(tǒng)統(tǒng)都是字符串型,python2中輸入的數(shù)據(jù)是什么類型,該數(shù)據(jù)就是什么類型。python2中的raw_input同python3中的input類似。

8.性能方面

python2的性能要比python3高30%左右。


有疏漏的地方大家發(fā)消息,我會進(jìn)行修改。Thank you!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容