學python2.7簡單還是python3.0簡單,兩者區別


學python2.7簡單還是python3.0簡單,談談兩者區別

1. 使用__future__模塊

Python 3.X 引入了一些與Python 2 不兼容的關鍵字和特性。在Python 2中,可以通過內置的__future__模塊導入這些新內容。如果你希望在Python 2中寫的代碼也可以在Python 3.X中運行,那么建議使用__fufure__模塊。

2. print 函數

雖然print語法是Python 3中一個很小的改動,但是依然值得提一下:Python 2中的print 語句被Python 3中的 print()函數取代,這意味着在Python 3中必須用括號將需要輸出的對象括起來。在Python 2中使用額外的括號也可以,但是如果要在Python 3中以Python 2 的形式不帶括號調用 print 函數,就會觸發SyntaxError(語法錯誤)。

3. 整數除法

由於人們常常會忽視Python 3 在整,數除法上的改動(寫錯了也不會觸發SyntaxError),因此在移植代碼或在Python 2 中執行Python 3 的代碼時需4要特別注意這個改動。

4. Unicode

Python 2 有基於ASCII 的 str()類型,可通過單獨的 unicode()的函數轉成 unicode類型,但沒有byte 類型。在Python 3 中有了Unicode(UTF-8)

字符串和兩個字節類(bytes和bytearrays)。

5. xrange

在Python 2.x中,經常會用xrang()創建一個可迭代對象,通常出現在“for”循環或“列表/集合/字典推導式”中。(在Python 3 中使用 xrang()會觸。NameError)。

6. 觸發異常

Python 2 支持新舊兩種異常觸發語法,而Python 3 只支持帶括號的語法(不然會觸發SyntaxError)。

7. 處理異常

Python 3中的異常處理發生了一點變化。在Python 3中必須使用as 關鍵字,Python 2 中不需要。

8. next()函數和.net()方法

由於會經常用到next() (.next())函數(方法),因此要提到另一個語法改動(實現方面也做了改動):在Python 2中,函數形式和方法形式都可以使用;在Python 3中 ,只能使用next()函數(試圖調用.next()方法會觸發AttributeError) 。

9. for循環變量與全局命名空間泄露

在Python 3中,for循環中的變量不再會泄露到全局命名空間中了。

10. 比較無序類型

Python 3 中另一個優秀的改動是,如果我們試圖比較無序類型,就會觸發一個TypeError。

11. 使用 input()解析輸入內容

Python 3 改進了input()函數,這樣該函數就會總是將用戶的輸入存儲為 str對象。在Python 2 中,為了避免讀取非字符串類型會發生的一些危險行為,不得不使用 raw_input()代替input()。

12. 返回可迭代對象,而不是列表

某些函數和方法在Python 3 中返回的是可迭代對象,而不像在Python 2 中返回列表。對象只遍歷一次會節省很多內存,如果通過生成器多次迭代這些對象,效率就不高了。此時如果需要列表對象,可以通過Python 3的list()函數簡單地將可迭代對象轉成列表。

轉載(http://www.96net.com.cn/)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM