Python 2 和 Python 3 有哪些主要區別?

時間 2021-05-08 08:05:37

1樓:修行路

如果是在學習Python2或是Python3中糾結,別糾結了,直接選Python3吧。

按照Python官方的計畫,Python2只維持到2023年,很多原先使用Python2的語法和庫都在向Python3遷移了,所以未來一定是Python3的天下,毋庸置疑。

此外,Python 3自帶了乙個叫做2to3的實用指令碼(Utility Script),這個指令碼會將你的Python 2程式原始檔作為輸入,然後自動將其轉換到Python 3的形式。

Python3和Python2的區別也沒有那麼大,主要是一些細微的區別。

很多答主都說的很詳細啦,感覺都沒什麼好補充的了。我就只簡單的寫寫它們主要的區別,有些區別不是很重要的,就忽略了,幫助大家快速的了解兩者的區別

1.print

這個用到的很廣泛,需要提一下。

Python 2中的print語句被Python 3中的print()函式取代,這意味著在Python 3中必須用括號將需要輸出的物件括起來。

2.input

Python 3整合了Python 2的輸入字串的row_input()和輸入數字的input(),只留下了後者。

3.除法/

Python 2中的/是整數相除,得到乙個整數,Python 3整數相除可以得到乙個小數。

4.range

Python 2返回列表,Python 3返回可迭代物件,而且Python3中沒有了xrange。

5.Unicode

Python 2有基於ASCII的str()型別,其可通過單獨的unicode()函式轉成unicode型別,但沒有byte型別;Python 3中,終於有了Unicode(utf-8)字串,以及兩個位元組類:bytes和bytearrays。

5.異常觸發

Python 2支援新舊兩種異常觸發語法,而Python 3只接受帶括號的的語法(不然會觸發SyntaxError)

6.異常處理

Python 3中的異常處理也發生了一點變化,在Python 3中必須使用「as」關鍵字。

7. next()函式和.next方法

在Python 2.7.5中,函式形式和方法形式都可以使用,而在Python 3中,只能使用next()函式(試圖呼叫.next()方法會觸發AttributeError)。

8.for迴圈

在Python 3.x中,for迴圈中的變數不再會洩漏到全域性命名空間中了。

9.比較符

Python 2支援任意兩個物件比較,而Python 3只接受同一型別的物件比較。

10.開啟檔案

Python 2支援使用file()或open(),而Python 3只只能使用後者。

以上基本就是主要的區別了,還有一些細微的區別,不那麼常用,就不說了。

最後,要是想學Python的話,可以看看我下面的回答。

怎樣學 Python?

對Python感興趣的朋友,也可以看看下面的鏈結,感受一下Python的難度,看看適不適合自己。

推薦上面的扇貝程式設計,可以試試,看自己能否駕馭Python的難度。

2樓:python小達

目前市場上有兩個Python版本並存著,分別是Python 2.XPython 3.X

Python 2.x是過去的版本,直譯器的名稱是Python2

Python 3.x是現在和未來主流的版本,直譯器名稱是Python3

相比於Python的早期版本,Python3.X有乙個較大的公升級。為了不帶入過多的累贅,Python 3.

0在設計時並沒有考慮向下相容,導致許多用早期Python版本設計的程式都無法在Python3.0上正常執行。

為了兼顧現有的程式,官方提供了乙個過渡版本Python2.6。這個版本基本使用了Python2.

X語法,但同時也考慮了向Python3.0的遷移,允許使用部分Python3.0語法函式

2023年推出的Python2.7被確定為Python 2.x的最後乙個版本

編寫Python程式時建議使用Python3.0的語法。

在程式開發過程中,如果無法使用Python3.0的語法(極少數第三方庫不支援3.0的語法),建議先用Python 3.

0進行開發,然後用Python 2.6、Python 2.7執行,並作一些相容性處理

3樓:

此處列舉一些學習Python 3過程中,遇到的與以往使用Python 2.7時不同的寫法與習慣,可能包含一些Python 2不常用寫法,不保證是Python 3獨有的特性。# py2

print

"Hello World!"

# py3

print

("Hello World!"

)# py3 print函式可以使用逗號當做空格,從而分隔字串

print

("Carpe"

,"diem"

)# > Carpe diem

# py3 print預設使用換行作為結尾,end引數可以改變結尾

print

("Carpe "

,end=""

)print

("diem"

)# > Carpediem

# {} 花括號能執行表示式x,

y=42,

99print(f

'+= ')

# > 42 + 99 = 141

# py2 除法運算子,為整數除法運算子:如果兩個運算元是整數,那麼輸出也是整數,效果為向下取整

print9/

2# > 4

print-9

/2# > -5

# py3 除法運算子,為浮點數運算子:運算元為整數,輸出為浮點數

print(9

/2)# > 4.5

print(-

9/2)

# > -4.5

# py3 整數除法運算子為 // ,效果同py2的 /

print(9

//2)# > 4

print(-

9//2)

# > -5

# 此處是乙個py2、py3通用的運算元,但是比較易錯

# (a%b) == (a - (a//b)*b)

print(41

%14)# > 13

print(14

%41)# > 14

print(-

32%9)

# > 4 -32 - (-32 // 9 * 9)

print(32

%-9)# > -4 32 - (32 // -9 * -9)

# 此處也是乙個通用運算元,但比較易錯

print(4

**3**2

)# > 262144,因為**運算子是右邊優先順序高,相當於4**(3**2)

這個函式太沙雕了,建議用numpy的around函式。

# py2 rounding遇到0.5,是向遠離0的方向取值,返回float

print

round

(0.5

)# > 1.0

print

round

(1.5

)# > 2.0

print

round(-

0.5)

# > -1.0

print

round(-

1.5)

# > -2.0

# py3 rounding遇到0.5,是向偶數方向取值,返回int

print

(round

(0.5

))# > 0

print

(round

(1.5

))# > 2

print

(round(-

0.5))

# > 0

print

(round(-

1.5))

# > -2

# == 是值相等

print(==

)# > True

# is 是refer to同乙個object

print(is

)# > False

# 返回乙個sorted list

sorted(list_of_tuples, key=lambda d: d[2], reverse=True)

4樓:Albert Wang

最基礎的運算子:/在2裡面是地板除(取整)舉個例子:3/2=1。而在3裡面是真除法。3/2=1.5。如果想在3裡用地板除的話可以使用//。3//2=1

5樓:

我執行Python3第一眼發現的區別是.pyc檔案都放到__pycache__路徑下了,程式路徑下沒有滿眼的pyc檔案清爽了好多!

6樓:NeGoo

用一門語言無非是好用,其實用Python無關2.7Or3.6,用的好用稱手足矣。

現在有很多庫是基於2的,3不好用的時候嘗試下2,相反嘗試下3,總會找到自己的感覺。

區別樓上都說了,我也不再贅述。

本人拙見。

7樓:

根據 Learn python the hard way 這本書的練習題,來區別 py2 和 py3。本人負基礎學 python,漫長的摸索階段啊……

### 1.修改 ex1.py

加上了 ()。

**發現:**print不再是語句,而是函式。python2.

X 為 print "Hello world!" python3.X是 print("Hello world!

")。### 2.修改ex1.py,另存為ex101.py

**發現:** Py3.X原始碼檔案預設使用utf-8編碼,可以使用中文了。

在Python3.X可以定義變數:漢字="test",print(漢字)而不會報錯,反過來也成立。

此外:給python2.X的print加括號並不和python3.X等效,比如:

python2.X:

print(1,2)

(1, 2)

python3.X:

print(1,2)

1 2查了下資料,說法如下:「因為在python2裡print不是函式,括號內如果沒有逗號會被認為是數學表示式的括號,忽略;如果有逗號,則會被認為是tuple。」

### 3.修改 ex3.py

將以下:

print ("Is it true that 3 + 2 < 5 - 7?")

print (3 + 2 < 5 - 7)

print ("What is 3 + 2?", 3 + 2)

print ("What is 5 - 7?", 5 - 7)

print ("Oh,that's why it's False.")

修改為:

print ("Is it true that 3 / 2 < 3 // 2 ?")

print ( 3 / 2 < 3 // 2)

print ("What is 3 / 2 ?", 3 / 2)

print ("What is 3 // 2 ?", 3 // 2 )

print ("Oh,that's why it's False.")

**發現:**整形除法自動轉為float:在python 2.

X裡, 3 / 2 = 1, 3 // 2 = 1;而python 3.X裡, 3 / 2 = 1.5, 3 // 2 = 1。

### 4.修改 ex11.py

**發現:** raw_input 在python 3.X 為

input,覆蓋了原來的input函式,不再使用raw_input這個函式名。

### 5.修改 ex4.py

**發現:** 是不是因為Unicode的原因,輸入(-2)**0.5 不會觸發錯誤,可以算出數值(但這個數值看起來很奇怪……) ,具體我還得再摸索一下。

最後,當然看官方文件是最好的學習方式:[文件](What』s New In Python 3.0)

請問python2和python3差別大嗎 如果學python3 然後用python2的系統操作

我很少回答問題,如果我簡單說差別大或者小是不是太草率?反而我覺得最合適的答案是別學Py2了,哪怕差別很小。Python3才是未來,也是當下。 學神IT教育 為了考試內容的話,建議還是python2,因為考試過程中所有的考試題都是python2的內容。如果你按照python3的內容去考試,可能會出現無...

python2和python3到底選誰?

jk911 瀉藥月經帖啊,每過一段時間都會有這個問題。Python2 大部分雲伺服器上現在預設的python版本還是2.後期實踐上2轉3很方便的其實。區別在與各種包的支援,而包這個東西,還是看具體實施。語法上從你初學的層面上其實沒什麼大區別 我的建議是學習2,然後在特定包的情況下,用用3,反正就是環...

在同時擁有python2和python3的情況下,如何單獨公升級python2的pip?

window下安裝python3時選擇安裝python啟動器,py 3啟動python3,py 2啟動python2 py 2 m pip install U pip 公升級python2的pip py 3 m pip install U pip 公升級python3的pip 1.把Python2目...