溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

python2.x與python3.x的區(qū)別

發(fā)布時(shí)間:2020-09-23 10:14:37 來源:億速云 閱讀:207 作者:Leah 欄目:編程語言

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)碛嘘P(guān)python2.x與python3.x的區(qū)別,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

1、Python 3.x print函數(shù)代替了print語句 

在 Python2.x 中,輸出數(shù)據(jù)使用的是 Print 語句,例如:

>>> print "3,4"
3,4
或者
>>> print(3,4)
(3,4)

但是在 Python 3.x 中,print 語句沒有了,取而代之的是 print 函數(shù),例如:

>>> print(3,4)
3 4

如果還像 Python 2.x 中那樣使用 print 語句,Python 編譯器就會(huì)報(bào)錯(cuò),例如:

>>> print "3,4"
  File "<stdin>", line 1
    print "3,4"
              ^
SyntaxError: Missing parentheses in call to 'print'

2、Python 3.x 默認(rèn)使用 UTF-8 編碼

相比 Python 2.x 默認(rèn)采用的 ASCII 編碼,Python 3.x 默認(rèn)使用 UTF-8 編碼,可以很好地支持中文或其它非英文字符。

例如,輸出一句中文,使用 Python 2.x 和 Python 3.x 的區(qū)別如下:

#Python 2.x
>>>str ="C語言中文網(wǎng)"
>>>str
'C\xe8\xaf\xad\xe8\xa8\x80\xe4\xb8\xad\xe6\x96\x87\xe7\xbd\x91'

#Python 3.x
>>>str ="C語言中文網(wǎng)"
>>>str
'C語言中文網(wǎng)'

不僅如此,在 Python 3.x 中,下面的代碼也是合法的:

>>>中國(guó)="China"
>>>print(中國(guó))
China

3、Python 3.x 除法運(yùn)算

和其他語言相比,Python 的除法運(yùn)算要高端很多,它的除法運(yùn)算包含 2 個(gè)運(yùn)算符,分別是 / 和 //,這 2 個(gè)運(yùn)算符在 Python 2.x 和 Python 3.x 的使用方法如下:

 / 運(yùn)算符

在 Python 2.x 中,使用運(yùn)算符 / 進(jìn)行除法運(yùn)算的方式和 Java、C 語言類似,整數(shù)相除的結(jié)果仍是一個(gè)整數(shù),浮點(diǎn)數(shù)除法會(huì)保留小數(shù)點(diǎn)部分,例如:

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

但是在 Python 3.x 中使用 / 運(yùn)算符,整數(shù)之間做除法運(yùn)算,結(jié)果也會(huì)是浮點(diǎn)數(shù)。例如:

>>>1/2
0.5

運(yùn)算符 //

使用運(yùn)算符 // 進(jìn)行的除法運(yùn)算叫做 floor 除法,也就是輸出不大于結(jié)果值的一個(gè)最大的整數(shù)(向下取整)。此運(yùn)算符的用法在 Python 2.x 和Python 3.x 中是一樣的,舉個(gè)例子:

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

4、Python 3.x 異常

在 Python 3.x 版本中,異常處理改變的地方主要在以下幾個(gè)方面:在 Python 2.x 版本中,所有類型的對(duì)象都是直接被拋出的,但是在 Python 3.x 版本中,只有繼承 BaseException 的對(duì)象才可以被拋出。在 Python 2.x 版本中,捕獲異常的語法是“except Exception,var:”;但在 Python 3.x 版本中,引入了 as 關(guān)鍵字,捕獲異常的語法變更為 “except Exception as var:”。

在 Python 3.x 版本中,處理異常用 “raise Exception(args)”代替了“raise Exception,args”。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、Python 3.x 八進(jìn)制字面量表示

在 Python 3.x 中,表示八進(jìn)制字面量的方式只有一種,并且必須寫成“0o1000”這樣的方式,原來“01000”的方式不能使用了。舉個(gè)例子:

#Python 2.x
>>> 0o1000
512
>>> 01000
512

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

6、Python 3.x 不等于運(yùn)算符

Python 2.x 中的不等于運(yùn)算符有 2 種寫法,分別為 != 和 <>,但在 Python 3.x 中去掉了 <>,只有 != 這一種寫法,例如:

#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、Python 3.x 數(shù)據(jù)類型

Python 3.x 中對(duì)數(shù)據(jù)類型也做了改動(dòng),比如說:Python 3.x 去除了 long 類型,現(xiàn)在只有一種整形 int,但它的行為就像是 Python 2.x 版本中的 long。Python 3.x 新增了 bytes 類型,對(duì)應(yīng) Python 2.x 版本的八位串,定義 bytes 字面量的方法如下所示:

>>>b=b'China'
>>>type(b)
<type 'bytes'>

字符串對(duì)象和 bytes 對(duì)象可以使用 .encode() 或者 .decode()方法相互轉(zhuǎn)化,例如:

>>>s=b.decode()
>>>s
'China'
>>>b1=s.encode()
>>>b1
b'China'

Python 3.x 中,字典的 keys()、items() 和 values() 方法用返回迭代器,且之前的 iterkeys() 等函數(shù)都被廢棄。同時(shí)去掉的還有 dict.has_key(),改為用 in 替代。

上述就是小編為大家分享的python2.x與python3.x的區(qū)別了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI