python2.x和python3.x的版本區別

  Python 3.x 版本相對於Python的早期版本,是一個較大的升級;許多針對早期Python版本設計的程式都沒法在Python 3.0上正常執行。python

Python 3.0 的變化主要體如今如下幾個方面:

1. print()函數函數

  Python 2 中的print語句沒有了,取而代之的是print()函數編碼

在Python2.6和Python2.7中,這三種形式是等價的 print "fish" 
    print ("fish")      # print後面有個空格
    print("fish")       # print()不能帶任何其餘參數

2. Unicodespa

  python 2 默認支持ASCII編碼,是不支持中文的;而Python 3 中默認是utf-8編碼,能夠識別中文;命令行

Python 2.x中:設計

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

Python 3.x中:code

>>> str = "啊哈哈哈"
>>> str '啊哈哈哈'

3. 異常對象

  python 3 中捕獲異常的語法由 except Exception,e 改爲 except Exception as eblog

  在2.x時代,全部類型的對象均可以直接被拋出;但在3.x時代,只有繼承自BaseException的對象才能夠被拋出,並且會讓異常變得更爲專注,只有在錯誤發生的狀況才能用異常捕獲語句來處理。繼承

4. xrange

  在Python 2 中 xrange() 是列表,它建立迭代對象的用法是很是流行的。好比:for 循環或者是列表/集合/字典推導式。這個表現十分像生成器。但這個 xrange-iterable 是無窮的,意味着能夠無限遍歷。因爲它的惰性求值,xrange() 函數 比 range() 更快。儘管如此,對比迭代一次,不建議重複迭代屢次,由於生成器每次都從頭開始。

  在Python 3 中,range是可迭代對象;range()是像 xrange() 那樣實現,在 Python 3 中 xrange() 會拋出命名異常。

5. 不等運算符

  Python 2.x 中的不等於有兩種寫法: != 和 <>

  Python 3.x 中去掉了 <>,只有一種 != 寫法

6. 數據類型

  Python 3.x 去除了long類型,只有一個int類型,但它的行爲就像是 2.x 版本的long;並且新增了bytes類型

  str對象和bytes對象能夠用 .encode(str -> bytes) 或 .decode(bytes -> str)方法實現相互轉化

7. raw_input() 和 input()

  Python 2 有兩個全局函數,用在命令行請求用戶輸入

  第一個是:input(),等待用戶輸入python表達式,而後返回結果;

  第二個是:raw_input(),用戶輸入什麼內容就返回什麼

8. 全局函數CALLABLE()

  Python 2 中可使用全局函數callable()來檢查一個對象是否可調用;而在Python 3 中,這個全局函數被取消了,爲了檢查一個對象是否可調用,能夠檢查特殊方法__call__()的存在性

相關文章
相關標籤/搜索