教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

Python 2.x和Python 3.x版本有什么區(qū)別

更新時(shí)間:2019年07月15日16時(shí)19分 來源:傳智播客 瀏覽次數(shù):

Python發(fā)展到現(xiàn)在,經(jīng)歷了多個(gè)版本,大家可以在Python官網(wǎng)查看,網(wǎng)址是https://www.python.org/downloads/截至目前,仍然保留的版本主要是基于Python 2.x和Python 3.x。下面列舉了Python的歷史版本。
 
版本號(hào) 發(fā)布時(shí)間 擁有者 GPL兼容
0.9.0—1.2 1991—1995 CWI
1.3—1.5.2 1995—1999 CNRI
1.6 2000 CNRI
2.0 2000 Beopen.com
2.1 2001 CNRI
2.01 2001/6/22 PSF
2.2——2.7.11 2001-2015 PSF
2.7.12 2016.06 PSF
2.7.13 2016.12 PSF
3.x 2008-至今 PSF
 
 
Python 2.x和Python 3.x版本區(qū)別
 
和Python 2.x版本相比,Python 3.x版本在語句輸出、編碼、運(yùn)算和異常等方面做出了一些調(diào)整,具體如下。
 
  1. print函數(shù)替代了print語句
在Python2x中,輸出數(shù)據(jù)使用的是print語句。但是在Python 3.x中,print語句沒有了,取而代之的是print函數(shù)。示例代碼如下
 
Python 2.X
 
>>> print(3, 4)
(3, 4)

 
 
Python 3.X
 
>>> print(3, 4)
3 4

 
  1. Python3x默認(rèn)使用UTF-8編碼
Python 2.0中有ASCII Str()類型,Unicode()是單獨(dú)的,不是byte類型。在 Python 3.x版本
的源代碼中,默認(rèn)使用的是UTF-8編碼,從而可以很好地支持中文或其他非英文字符。例如,
輸出一句中文,使用 Python 2.x和 Python 3.x的輸出結(jié)果如下所示:
 
Python 2.X
> string demo = "我愛北京天安門”
>> string_demo
‘xe6x88x91xe7\x88xhb1)xe5\x8cx97\xe4xhaxacxe5\xa4xa9)xe5\xaex89xe9x97xa8’

 
Python 3.x
>> string_demo= "我愛北京天安門”
>> string_demo
‘我愛北京天安門’

 


python版本區(qū)別
  1. 除法運(yùn)算
和其他語言相比,Python語言的除法非常高端,它的除法運(yùn)算包含兩個(gè)運(yùn)算符,分別是和這兩個(gè)運(yùn)算符在Pyhon 2.x和Python 3.x中的使用如下所示。
 
  1. 運(yùn)算符/
在Pyhon 2.x中,使用運(yùn)算符/進(jìn)行除法運(yùn)算的方式和Java、C語言相似,整數(shù)相除的結(jié)個(gè)整數(shù),浮點(diǎn)數(shù)除法會(huì)保留小數(shù)點(diǎn)的部分得到一個(gè)浮點(diǎn)數(shù)的結(jié)果。但是,在Python3x中運(yùn)算符進(jìn)行除法運(yùn)算,整數(shù)之間的相除,結(jié)果也會(huì)是浮點(diǎn)數(shù)。示例代碼如下:
 
Python 2.X
 
>>> 1/2
0
>>> 1.0/2.0
0.5

 
Python 3.X
 
>>> 1/2
0.5

 
 
(2)運(yùn)算符//
使用運(yùn)算符進(jìn)行的除法運(yùn)算叫作floor除法,這種除法會(huì)對除法的結(jié)果自動(dòng)進(jìn)行一個(gè)floor操作。使用這種運(yùn)算符進(jìn)行的除法運(yùn)算,在 Python 2.x和 Python 3.x中是一致的。示例代碼如下:
 
Python 2.X
 
>>> -1//2
-1

 
 
Python 3.x
>>> -1//2
-1

 
需要注意的是,使用運(yùn)算符//進(jìn)行的除法是執(zhí)行floor操作,即獲取不大于結(jié)果值的最大整數(shù)(向下取整)。
 
4、異常
在 Python3x版本中,異常處理改變的地方主要如下。

(1)在 Python2x版本中,所有類型的對象都是直接被拋出的,但是在 Python 3.x版本中,只有繼承自 BaseException的對象才可以被拋出。

(2)在 Python2x版本中,捕獲異常的語法是”except Exception,var”。在 Python 3.x版本中,引入了as關(guān)鍵字,捕獲異常的語法變更為“except Exception as var”

(3)在 Python2x版本中,處理異常使用“raise Exception,args";在 Python 3.x版本中,處理異常使用“raise Exception(args)”。

(4)Python 3.x版本中取消了異常類的序列行為和.message屬性。

關(guān)于 Python 2.x版本中和 Python 3.x版本中處理異常的示例代碼如下:
 
 
Python 2.x
 
>> >try:
… raise TypeError, "類型錯(cuò)誤”
… except TypeError, err:
… print err.message

類型錯(cuò)誤

 
 
Python 3.x
 
>> >try:
… raise TypeError("類型錯(cuò)誤")
… except TypeError as err;
… print(err)

類型錯(cuò)誤

 
 
5、八進(jìn)制字面量表示
 
在 Python3x中,表示八進(jìn)制字面量的方式只有一種,并且必須寫成“0o1000”這樣的方式,原來“01000的方式不能使用了。示例代碼如下:
 
Python 2.x
>>>0o1000
512
>>>01000
512

 
Python 3.x
>>01000
File "<stdin>", line 1
01000
         ^
SyntaxError: invalid token
>>>0o1000
512

 
 
6、不等于運(yùn)算符
Python2x的不等于運(yùn)算符有兩種寫法:!=和<>,但是, Python3x中去掉了<>,只有!=種寫法。示例代碼如下:
 
Python 2.X
>>>1 != 2
True
>>> 1 <> 2
True

 
Python 3.x
>>> 1 != 2
True

>>> 1 <> 2
File "<stdin>", line 1
1<>2
SyntaxError: invalid syntax
>>> 
 

7、數(shù)據(jù)類型
Python中數(shù)據(jù)類型的改變?nèi)缦隆?br />
  1. Python 3.x去除了long類型,現(xiàn)在只有一種整型int,但它的行為就像是 Python 2.X版本的long。
  1. Python 3.x新增了bytes類型,對應(yīng)于Python 2.x版本的八位串,定義一個(gè) bytes字面量的方法如下所示:
>>> bytes_demo = b'china’
>>> type(bytes_demo)
<type 'bytes’>

 
字符串對象和bytes對象可以使用.encode() (str→bytes)或者.decode() (byte→str)方法相互轉(zhuǎn)化。示例代碼如下。

>>>  string_demo = bytes demo decode ()
>>> string_demo
‘china’
>> > bytes_demo = string_demo.encode ()
>>> bytes_demo
b' chinat’

 
(3)python 3.x中,字典的keys(),itmes()和values()方法用返回視圖代替列表,而2.x版本中的iterkeys()等函數(shù)都被廢棄。同時(shí)去掉的還有has_keys()方法,用in代替。


推薦了解熱門學(xué)科
區(qū)塊鏈培訓(xùn)
軟件測試培訓(xùn)


0 分享到:
和我們在線交談!