天天看點

Python2.x與3​​.x版本差別(一)

總體概述

Python的3​​.0版本,常被稱為Python 3000,或簡稱Py3k。相對于Python的早期版本,這是一個較大的更新。

為了不帶入過多的累贅,Python 3.0在設計的時候沒有考慮向下相容。

許多針對早期Python版本設計的程式都無法在Python 3.0上正常執行。

為了照顧現有程式,Python 2.6作為一個過渡版本,基本使用了Python 2.x的文法和庫,同時考慮了向Python 3.0的遷移,允許使用部分Python 3.0的文法與函數。

新的Python程式建議使用Python 3.0版本的文法。

除非執行環境無法安裝Python 3.0或者程式本身使用了不支援Python 3.0的第三方庫。目前不支援Python 3.0的第三方庫有Twisted, py2exe, PIL等。

具體差別

1.print 函數

print語句沒有了,取而代之的是print()函數。 Python 2.6與Python 2.7部分地支援這種形式的print文法。在Python 2.6與Python 2.7裡面,以下三種形式是等價的:

print "hello"
print ("hello")
print("hello")#這裡沒有空格
           

2.Unicode

Python 2 有 ASCII str() 類型,unicode() 是單獨的,不是 byte 類型。

現在, 在 Python 3,我們最終有了 Unicode (utf-8) 字元串,以及一個位元組類:byte 和 bytearrays。

由于 Python3.X 源碼檔案預設使用utf-8編碼,這就使得以下代碼是合法的:

中國='China'
print(中國)
China
           
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

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

3.除法運算

在python 2.x中/除法就跟我們熟悉的大多數語言,比如Java啊C啊差不多,整數相除的結果是一個整數,把小數部分完全忽略掉,浮點數除法會保留小數點的部分得到一個浮點數的結果。

在python 3.x中/除法不再這麼做了,對于整數之間的相除,結果也會是浮點數。

Python 2.x:
>>> 1 / 5
0
>>> 1.0 / 2.0
0.5

Python 3.x:
>>> 1/5
0.2
           

本次由于時間關系,沒能總結全面,盡快更新全面的内容。