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

Python 2.x和Python 3.x版本有什么不同?【python技術(shù)】

更新時間:2019-07-15 來源:黑馬程序員 瀏覽量:


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

和Python 2.x版本相比,Python 3.x版本在語句輸出、編碼、運算和異常等方面做出了一些調(diào)整,具體如下。

1563181470986_python.jpg

 

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

 

2. Python3x默認(rèn)使用UTF-8編碼

Python 2.0中有ASCII Str()類型,Unicode()是單獨的,不是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

‘我愛北京天安門’

 

3. 除法運算

和其他語言相比,Python語言的除法非常高端,它的除法運算包含兩個運算符,分別是和這兩個運算符在Pyhon 2.x和Python 3.x中的使用如下所示。

 

(1) 運算符/

在Pyhon 2.x中,使用運算符/進(jìn)行除法運算的方式和Java、C語言相似,整數(shù)相除的結(jié)個整數(shù),浮點數(shù)除法會保留小數(shù)點的部分得到一個浮點數(shù)的結(jié)果。但是,在Python3x中運算符進(jìn)行除法運算,整數(shù)之間的相除,結(jié)果也會是浮點數(shù)。示例代碼如下:

 

Python 2.X


>>> 1/2

0

>>> 1.0/2.0

0.5

 

Python 3.X

 

>>> 1/2

0.5

 

 

(2)運算符∥

使用運算符進(jìn)行的除法運算叫作floor除法,這種除法會對除法的結(jié)果自動進(jìn)行一個floor操作。使用這種運算符進(jìn)行的除法運算,在 Python 2.x和 Python 3.x中是一致的。示例代碼如下:

 

Python 2.X

 

>>> -1//2

-1

 

 

Python 3.x

>>> -1//2

-1

 

需要注意的是,使用運算符//進(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, "類型錯誤”

… except TypeError, err:

… print err.message

類型錯誤

 

 

Python 3.x

 

>> >try:

… raise TypeError("類型錯誤")

… except TypeError as err;

… print(err)

類型錯誤

 

 

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、不等于運算符

Python2x的不等于運算符有兩種寫法:!=和<>,但是, 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)缦隆?/p>

(1)Python 3.x去除了long類型,現(xiàn)在只有一種整型int,但它的行為就像是 Python 2.X版本的long。

 

(2)Python 3.x新增了bytes類型,對應(yīng)于Python 2.x版本的八位串,定義一個 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ù)都被廢棄。同時去掉的還有has_keys()方法,用in代替。


推薦了解熱門學(xué)科
java培訓(xùn)

Python人工智能

Web前端培訓(xùn)

PHP培訓(xùn)
區(qū)塊鏈培訓(xùn)

影視制作培訓(xùn)
C++培訓(xùn)

產(chǎn)品經(jīng)理培訓(xùn)
UI設(shè)計培訓(xùn)

新媒體培訓(xùn)

產(chǎn)品經(jīng)理培訓(xùn)

Linux運維

分享到:
在線咨詢 我要報名
和我們在線交談!