首頁(yè)技術(shù)文章正文

Python 3.x和Python 2.x有哪些區(qū)別?

更新時(shí)間:2022-03-07 來源:黑馬程序員 瀏覽量:

Python 3.x不兼容Python 2.x,但這兩個(gè)系列在語(yǔ)法層面的差別不大。Python 3.x移除了部分混淆的表達(dá)方式,但大體語(yǔ)法與Python 2.x相似,Python 3.x的使用者可以輕松閱讀Python 2.x編寫的代碼。本節(jié)將列舉Python 3.x和Python 2.x的部分區(qū)別,以幫助大家了解它們之間的差異。

(1)編碼方式

Python 3.x默認(rèn)采用UTF-8編碼,對(duì)中文和英文都有良好的支持;Python 2.x默認(rèn)采用ASCII編碼,對(duì)中文支持不夠良好,為了防止因程序包含中文而報(bào)錯(cuò),一般在Python2.x文件首行將編碼格式設(shè)置為UTF-8,設(shè)置方式如下:

# -*-coding:utf-8 -*-
除需在程序首行添加以上代碼外,Python 2.x編寫的程序中需要使用decode()方法和encode()方法對(duì)接收和輸出的字符格式進(jìn)行轉(zhuǎn)換。

(2) print 語(yǔ)句

Python 3.x中用print()函數(shù)取代了python 2.x中的print語(yǔ)句,兩者功能相同,格式不同。具體示例如下:

Python 2.x

>>> print 3,4
3 4

Python 3.x

>>>  print(3,4)
3 4

(3)除法運(yùn)算

Python 3.x中兩個(gè)整數(shù)相除(使用運(yùn)算符“/”)返回一個(gè)浮點(diǎn)數(shù),不再返回整數(shù);使用運(yùn)算符“//”實(shí)現(xiàn)整除的用法一樣。具體示例如下:

Python 2.x

>>>1/2       #整數(shù)相除
0
>>>1.0/2.0    #浮點(diǎn)數(shù)相除
0.5

Python 3.x

>>> 1/2
0.5
>>> 1//2
0

(4)八進(jìn)制表示

Python 3.x中只使用“0o”開頭以表示八進(jìn)制,刪除了Python 2.x中使用“0”開頭的表示方法。

(5)比較行為

Python3.x只使用“!=”表示不等運(yùn)算,刪除了Python 2.x中的“<>”表示方法。Python3.x中的<、<=、>、>=運(yùn)算符被用于比較兩個(gè)不存在有意義順序的元素時(shí)不再返回布爾值,而是拋出異常。具體示例如下:

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'

(5)整數(shù)類型

Python 3.x中的整型不再區(qū)分整型和長(zhǎng)整型,只保留int類型,且int類型的長(zhǎng)度只與計(jì)算機(jī)的內(nèi)存有關(guān),內(nèi)存足夠大,整數(shù)就能足夠長(zhǎng);同時(shí)sys.maxint常量也被刪除。

(7) 關(guān)鍵字

Python3.x中增加了關(guān)鍵字as、with、True、False、None。

(8) input()函數(shù)

Python 3.x中使用input()函數(shù)取代了raw_input()函數(shù)。

(9) range()函數(shù)

Python 3.x中使用list()函數(shù)對(duì) range()函數(shù)的返回值進(jìn)行轉(zhuǎn)換,以實(shí)現(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]

(10)異常

Python3.x中使用as關(guān)鍵字標(biāo)識(shí)異常信息。具體示例如下:

Python 2.x

>>> try:
...   raise TypeError,"類型錯(cuò)誤"
…  except TypeError,err:
...    print err.message
...
類型錯(cuò)誤

此外Python3.x中取消了異常類的序列行為和.message 屬性。本節(jié)只列舉了Pytbon版本的部分區(qū)別,更多內(nèi)容可參見Python 官網(wǎng)文檔。




猜你喜歡:

為什說Python語(yǔ)言對(duì)編程小白更友好?

遍歷Python字典的幾種方法

python字典操作:Python字典詳細(xì)教程

使用hist()繪制直方圖

黑馬程序員Python+大數(shù)據(jù)開發(fā)培訓(xùn)

分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!