資訊內容
講解 python2與3的區別

相關免費學習推薦:python視頻教程0IX少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺
python2和python3的區別0IX少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺
區別一、python3.0的一些變化1.print函數2.Unicode3.除法運算4.異常5.xrange6.八進制字面量表示7.不等運算符8.去掉了repr表達式"9.多個模塊被改名(根據PEP8)10.數據類型總結區別0IX少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺
??python的3.0版本,常被稱為python3000,簡稱py3k。相對于python的早期版本,這是一個較大的升級為了不帶入過多累贅,python3.0在設計的時候沒有考慮向下相容。
??許多針對早期python版本設計的程序都無法在python3.0上正常執行。為了照顧現有程序,python2.6作為一個過渡版本,基本使用了python2.x的語法和庫,同時考慮了向python3.0的遷移,允許使用部分python3.0的語法與函數。
??新的python程序建議使用python3.0版本的語法。除非執行環境無法安裝python3.0或者程序本身使用了不支持python3.0的第三方庫。目前不支持python的第三方庫有Twisted,py2exe,PIL等。
大多數第三方庫都正在努力的兼容python3.0版本。即使無法立即使用python3.0,也建議編寫相容的3.0版本python程序,然后使用2.6,2.7來執行。0IX少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺
一、python3.0的一些變化0IX少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺
1.print函數0IX少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺
??print語句沒有了,取而代之的是print()函數。python2.6與python2.7部分的支持這種形式的print語法。在python2.6與2.7里面以下三種形式是等價的0IX少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺
print "我是菜鳥"print (我是菜鳥) #注意print后邊有個空格print("我是菜鳥") #print()不能帶有其他任何參數??然而python2.6實際上已經支持新的print()語法0IX少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺
from _future_import print_functionprint("我是個菜鳥","我好菜啊",sep=', ')2.Unicode0IX少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺
??python2有ASCII str()類型,unicode()是單獨的,不是byte類型。現在python3有了Unicode(utf-8)字符串,以及一個字節類:byte和bytearrays。由于python3.x源碼文件默認使用utf-8編碼,這就使得以下代碼合法0IX少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺
我沒女友='I have no girlfriends'print(我沒女友)3.除法運算0IX少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺
??python中的除法相較于其他語言會高端一些有些很復雜的規則,python中的除法有/與//兩個運算符。
首先說除法,python2.x和大多數語言一樣,比如java和c,整數相除結果是一個整數,把小數部分完全忽略掉,浮點數的除法會保留小數點的部分得到的一個浮點數結果。
??python3.x中除法就不再這樣做了,對于整數間的相除結果也會是浮點數。(這里可以用0/1來理解)
??而對于//除法,這種除法叫floor除法,會對除法的結果自動進行一個floor操作,在python2.x和3.x中是一致的。0IX少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺
??注意的是并不是舍棄小數部分,而是執行floor操作,如果要截取小數部分,那么就需要使用math模塊的trunc函數。0IX少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺
4.異常0IX少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺
??在python3中處理異常也輕微改變了,在python3中,我們使用as作為關鍵詞。捕獲異常的語法由 except exc,var改為 except exc as var。
??使用語法except(exc1,exc2) as var可以同時捕獲多種類別的異常。python2.6已經支持這兩種語法。
·在2.x時代,所有類型的對象都是可以被直接拋出的,在3.x時代只有繼承BaseException的對象才可被拋出。
·2.x raise語句使用逗號將拋出對象類型和參數分開,3.x取消了這種奇葩寫法,直接調用構造函數拋出對象即可。
??在2.x時代,異常在代碼中除了表示程序錯誤,還經常做一些普通控制結構應該做的事,在3.x中可以看出,設計者讓異常變得更加專一,只有在錯誤發生的情況下才能用去用異常捕獲語句來處理。0IX少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺
5.xrange0IX少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺
??在python2中xrange()創建迭代對象的用法是非常流行的。比如:for循環或者是列表/集合/字典推導式。
??這個表現十分像生成器(比如:“惰性求值”)。但是這個xrange-iterable是無窮的,意味著你可以無限遍歷。
??由于它的惰性求值,如果你要遍歷它多次,xrange()函數比range()函數更快(比如for循環)。盡管如此,對比迭代一次,不建議你迭代多次,因此生成器每次都從頭開始。
??在python3中,range()是像xrange()那樣實現,以至于一個專門的xrange()函數都不再存在(在python3中xrange()會拋出命名異常。0IX少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺
6.八進制字面量表示0IX少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺
??八進制必須寫成0o777,原來的形式0777不能用了;二進制0b111。新增了一個bin()函數用于將一個整數轉換成二進制字串。python2.6已經支持這兩種語法0IX少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺
7.不等運算符0IX少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺
python2.x中不等于 !=和<>
python3.x中不等于只有!=0IX少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺
8.去掉了repr表達式"0IX少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺
python2.x中反引號"相當于repr函數的作用
python3.x中去掉了"這種寫法,只允許repr函數,感覺repr只有debug的時候才用,多數時候還是用str函數來用字符串描述對象。0IX少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺
9.多個模塊被改名(根據PEP8)0IX少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺
舊名字新名字_winregwinregConfigParserconfigparsercopy_regcopyregQueuequeueSocketServersocketserverreprreprlib??StringIO模塊現在被合并到新的io模組內new,md5,gopherlib等模塊被刪除 。python2.6已經支援新的io模組。
??httplibBase,HTTPServer,CGIHTTPServer,SimpleHTTPServer,Cookie,cookerlib被合并到http包內。取消了exec語句只剩下exec()函數。python2.6已經支援exec()函數。0IX少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺
10.數據類型0IX少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺
??python3.x去除了long類型,現在只有一種整型——int
??新增了bytes類型,對應于2.x版本的八位串,定義一個butes字面量方法如下0IX少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺
str對象和bytes對象可以使用encode()(str->bytes)or.decode()(bytes->str)方法互相轉換。0IX少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺
s=b.decode()b1=s.encode()dict的.keys()、.items和.values()方法返回迭代器,而之前的iterkeys()等函數都被遺棄。同事去掉的還有dict.has_key(),用in替代它吧>_<。0IX少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺
總結0IX少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺
??總之一句話,用python3吧,不要再倔強了!
??才開始學習計算機不久,第一次寫博客,如果有問題希望大家指正,希望我們能一起學習一起進步。共勉!
以上就是講解 python2與3的區別的詳細內容,更多請關注少兒編程網其它相關文章!0IX少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

- 上一篇
2020年python面試題匯總(最新)
簡介隨著近些年機器學習、云計算等技術的發展,Python的職位需求越來越高。那么提前掌握最新的python面試題技巧,將有助于在求職中取得成功;同時少兒編程網作為知名的編程學習網站,有著最新最熱門的python面試題,包含包括python基礎面試題、python高級面試題以及python常見面試題!少兒
- 下一篇
Python爬取Json數據的示例
簡介Python教程欄目介紹爬取Json數據實例相關免費學習推薦:python教程(視頻)本文中以爬取其中的AI流轉率數據為例。該地址返回的響應內容為Json類型,其中紅框標記的項即為AI流轉率值:實現代碼如下:importrequestsimportjsonimportcsv#爬蟲地址url='