Python 2與Python 3的區別

2021-10-08 01:15:30 字數 2839 閱讀 7732

越來越多的庫要放棄python 2了,強哥也開始轉向python 3了。最近的專案開始用python3寫了,也體會了一下2和3的區別。主要的一些區別在以下幾個方面:

python 2中print是語句(statement),python 3中print則變成了函式。在python 3中呼叫print需要加上括號,不加括號會報syntaxerror

python 2

print "hello world"
輸出

hello world
python 3

print("hello world")
輸出

hello world
print "hello world"
輸出

file "", line 1

print "hello world"

^syntaxerror: missing parentheses in call to 'print'

在python 2中,3/2的結果是整數,在python 3中,結果則是浮點數

python 2

print '3 / 2 =', 3 / 2

print '3 / 2.0 =', 3 / 2.0

輸出

3 / 2 = 1 

3 / 2.0 = 1.5

python 3

print('3 / 2 =', 3 / 2)

print('3 / 2.0 =', 3 / 2.0)

輸出

3 / 2 = 1.5 

3 / 2.0 = 1.5

python 2有兩種字串型別:str和unicode,python 3中的字串預設就是unicode,python 3中的str相當於python 2中的unicode。

在python 2中,如果**中包含非英文本元,需要在**檔案的最開始宣告編碼,如下

# -*- coding: utf-8 -*-
在python 3中,預設的字串就是unicode,就省去了這個麻煩,下面的**在python 3可以正常地執行

a = "你好"

print(a)

python 2中捕獲異常一般用下面的語法

try:

1/0

except zerodivisionerror, e:

print str(e)

或者

try:

1/0

except zerodivisionerror as e:

print str(e)

python 3中不再支援前一種語法,必須使用as關鍵字。

python 2中有 range 和 xrange 兩個方法。其區別在於,range返回乙個list,在被呼叫的時候即返回整個序列;xrange返回乙個iterator,在每次迴圈中生成序列的下乙個數字。python 3中不再支援 xrange 方法,python 3中的 range 方法就相當於 python 2中的 xrange 方法。

在python 2中,map函式返回list,而在python 3中,map函式返回iterator。

python 2

map(lambda x: x+1, range(5))
輸出

[1, 2, 3, 4, 5]
python 3

map(lambda x: x+1, range(5))
輸出

list(map(lambda x: x+1, range(5)))
輸出

[1, 2, 3, 4, 5]
filter函式在python 2和python 3中也是同樣的區別。

python 3中的字典不再支援has_key方法

python 2

person = 

print "person has key \"age\": ", person.has_key("age")

print "person has key \"age\": ", "age" in person

輸出

person has key "age":  true 

person has key "age":  true

python 3

person = 

print("person has key \"age\": ", "age" in person)

輸出

person has key "age":  true
print("person has key \"age\": ", person.has_key("age"))
輸出

traceback (most recent call last):

file "", line 1, in attributeerror: 'dict' object has no attribute 'has_key'

Python 2 與Python 3的區別

1.除號 與整除號 python 2中,是整除 python 3中,是常規除法,是整除 2.raw input與input python 2用raw input python 3用input 都表示輸入函式。3.print與print 以及逗號 python 2中,print my print na...

Python3 與 Python2 的不同

至於學習 python3 和 python2,我了解到的觀點是這樣的。1 現在很多的專案都還是在用 python2,學習 python2 還是有意義的 2 python2 在 python 的官方已經公布了在什麼什麼時間停止維護,所以對於新手來說,學習 python2 的價值不是很大,所以直接 py...

Python2 與Python3 的區別

1.print函式 py2中print是乙個語法結構,如 print value py3中print是乙個函式,如 print value 2.除法運算 py2中兩個整數除法得到的是0,要想得到浮點數結果,則被除數或除數二者要有乙個是浮點數才行。如 print 1 4 0 print 1 4.0.2...