更新時間:2022-03-07 來源:黑馬程序員 瀏覽量:
Python 3.x不兼容Python 2.x,但這兩個系列在語法層面的差別不大。Python 3.x移除了部分混淆的表達(dá)方式,但大體語法與Python 2.x相似,Python 3.x的使用者可以輕松閱讀Python 2.x編寫的代碼。本節(jié)將列舉Python 3.x和Python 2.x的部分區(qū)別,以幫助大家了解它們之間的差異。
Python 3.x默認(rèn)采用UTF-8編碼,對中文和英文都有良好的支持;Python 2.x默認(rèn)采用ASCII編碼,對中文支持不夠良好,為了防止因程序包含中文而報錯,一般在Python2.x文件首行將編碼格式設(shè)置為UTF-8,設(shè)置方式如下:
# -*-coding:utf-8 -*-除需在程序首行添加以上代碼外,Python 2.x編寫的程序中需要使用decode()方法和encode()方法對接收和輸出的字符格式進(jìn)行轉(zhuǎn)換。
Python 3.x中用print()函數(shù)取代了python 2.x中的print語句,兩者功能相同,格式不同。具體示例如下:
Python 2.x
>>> print 3,4 3 4
Python 3.x
>>> print(3,4) 3 4
Python 3.x中兩個整數(shù)相除(使用運算符“/”)返回一個浮點數(shù),不再返回整數(shù);使用運算符“//”實現(xiàn)整除的用法一樣。具體示例如下:
Python 2.x
>>>1/2 #整數(shù)相除 0 >>>1.0/2.0 #浮點數(shù)相除 0.5
Python 3.x
>>> 1/2 0.5 >>> 1//2 0
Python 3.x中只使用“0o”開頭以表示八進(jìn)制,刪除了Python 2.x中使用“0”開頭的表示方法。
Python3.x只使用“!=”表示不等運算,刪除了Python 2.x中的“<>”表示方法。Python3.x中的<、<=、>、>=運算符被用于比較兩個不存在有意義順序的元素時不再返回布爾值,而是拋出異常。具體示例如下:
Python 2.x
>>>1 <'a' Flase
Python 3.x
>>> 1 <'a' Tracapack (most recent call last): File "<stdin>", line 1, in <module> TypeError: '<' not supported between instances of 'int' and 'str'
Python 3.x中的整型不再區(qū)分整型和長整型,只保留int類型,且int類型的長度只與計算機(jī)的內(nèi)存有關(guān),內(nèi)存足夠大,整數(shù)就能足夠長;同時sys.maxint常量也被刪除。
Python3.x中增加了關(guān)鍵字as、with、True、False、None。
Python 3.x中使用input()函數(shù)取代了raw_input()函數(shù)。
Python 3.x中使用list()函數(shù)對 range()函數(shù)的返回值進(jìn)行轉(zhuǎn)換,以實現(xiàn)2.x中range()返回列表的功能。具體示例如下:
Python 2.x
>>> range(5) [0, 1, 2, 3, 4]
Python3.x
>>> range(5) range (0, 5) >>> list (range (5)) [0,1,2,3,4]
Python3.x中使用as關(guān)鍵字標(biāo)識異常信息。具體示例如下:
Python 2.x
>>> try: ... raise TypeError,"類型錯誤" … except TypeError,err: ... print err.message ... 類型錯誤
此外Python3.x中取消了異常類的序列行為和.message 屬性。本節(jié)只列舉了Pytbon版本的部分區(qū)別,更多內(nèi)容可參見Python 官網(wǎng)文檔。