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

2021-06-28 17:18:31 字數 5067 閱讀 2329

1樓:匿名使用者

1. print不再是語句,而是函式,比如原來是 print 'abc' 現在是 print('abc')但是 python2.6+ 可以使用 from __future__ import print_function 來實現相同功能》 2.

在python 3中,沒有舊式類,只有新式類,也就是說不用再像這樣 class foobar(object): pass 顯式地子類化object但是最好還是加上. 主要區別在於 old-style 是 classtype 型別而 new-style 是 type型別》 3.

原來1/2(兩個整數相除)結果是0,現在是0.5了python 2.2+ 以上都可以使用 from __future__ import division 實現改特性, 同時注意 // 取代了之前的 / 運算》 4.

新的字串格式化方法format取代%錯誤, 從 python2.6+ 開始已經在str和unicode中有該方法, 同時 python3依然支援 % 算符》 6. xrange重新命名為range同時更改的還有一系列內建函式及方法, 都返回迭代器物件, 而不是列表或者 元組, 比如 filter, map, dict.

items 等》 7. !=取代 < > python2 也很少有人用 < > 所以不算什麼修改》 8.

long重新命名為int不完全對, python3 徹底廢棄了 long+int 雙整數實現的方法, 統一為 int , 支援高精度整數運算.> 9. except exception, e變成except (exception) as e只有 python2.

5 及以下版本不支援該語法. python2.6 是支援的.

不算新東西》 10. exec變成函式類似 print() 的變化, 之前是語句.簡單補充下* 主要是類庫的變化, 組織結構變了些.

但功能沒變. urlparse - > urllib.parse 這樣的變化* 最核心的變化它沒有說, 對 bytes 和 原生 unicode 字串的支援, 刪除了 unicode 物件, str 為原生 unicode 字串, bytes 替代了之前的 str 這個是最核心的.

2樓:

郡齋雨中與諸文士燕集(韋應物)

python2和python3的區別

3樓:敲黑板劃重點

python2和python3分別是python的兩個版本,python3作為一個升級版,許多針對早期python版本設計的程式都無法在python

3.0上正常執行的。區別:

1、python2 既可以使用帶小括號的方式,也可以使用一個空格來分隔列印內容,比如 print 'hi'

python3 使用 print 必須要以小括號包括列印內容,比如 print('hi')

2、python2 range(1,10)返回列表,python3中返回迭代器,節約記憶體

3、python2中使用ascii編碼,python3中使用utf-8編碼

4、python2中unicode表示字串序列,str表示位元組序列

python3中str表示字串序列,byte表示位元組序列

5、python2中為正常顯示中文,引入coding宣告,python3中不需要

6、python2中是raw_input()函式,python3中是input()函式

極光爬蟲,資料採集服務服務提供商,為您提供更快,更可靠的服務。

4樓:千鋒教育

python2.x和python3.x的核心區別如下:

1.print函式:print不再是語句,而是函式(python3中print為一個函式,必須用括號括起來;python2中print為class)。

比如原來是 print 'abc' 現在是 print('abc')

python 2 的 print 宣告已經被 print() 函式取代了,這意味著我們必須包裝我們想列印在小括號中的物件。

2.在python 3中,沒有舊式類,只有新式類,也就是說不用再像這樣 class foobar(object): pass 顯式地子類化object

但是最好還是加上. 主要區別在於 old-style 是 classtype 型別而 new-style 是 type型別

3.新的字串格式化方法format取代%

錯誤, 從 python2.6+ 開始已經在str和unicode中有該方法, 同時 python3依然支援 % 算符

4. xrange重新命名為range

同時更改的還有一系列內建函式及方法, 都返回迭代器物件, 而不是列表或者 元組, 比如 filter, map, dict.items 等

5.long重新命名為int

不完全對, python3 徹底廢棄了 long+int 雙整數實現的方法, 統一為 int , 支援高精度整數運算.

6.exec變成函式

類似 print() 的變化, 之前是語句.

7.通過input()解析使用者的輸入:(python3中input得到的為str;python2的input的到的為int型,python2的raw_input得到的為str型別)統一一下:

python3中用input,python2中用row_input,都輸入為str

幸運的是,在 python 3 中已經解決了把使用者的輸入儲存為一個 str 物件的問題。為了避免在 python 2 中的讀取非字串型別的危險行為,我們不得不使用 raw_input() 代替。

8.整除:(沒有太大影響)(python3中/表示真除,%表示取餘,//表示地板除(結果取整);python2中/表示根據除數被除數小數點位得到結果,//同樣表示地板除)統一一下:

python3中/表示真除,%表示取餘,//結果取整;python2中帶上小數點/表示真除,%表示取餘,//結果取整

9.xrange模組:

在 python 3 中,range() 是像 xrange() 那樣實現以至於一個專門的 xrange() 函式都不再存在(在 python 3 中xrange() 會丟擲命名異常)。

在 python 2 中 xrange() 建立迭代物件的用法是非常流行的。比如: for 迴圈或者是列表/集合/字典推導式。

這個表現十分像生成器(比如。“惰性求值”)。但是這個 xrange-iterable 是無窮的,意味著你可以無限遍歷。

由於它的惰性求值,如果你不得僅僅不遍歷它一次,xrange() 函式 比 range() 更快(比如 for 迴圈)。儘管如此,對比迭代一次,不建議你重複迭代多次,因為生成器每次都從頭開始。

簡單補充下

主要是類庫的變化, 組織結構變了些. 但功能沒變. urlparse - > urllib.parse 這樣的變化

最核心的變化它沒有說, 對 bytes 和 原生 unicode 字串的支援, 刪除了 unicode 物件, str 為原生 unicode 字串, bytes 替代了之前的 str 這個是最核心的

5樓:老男孩教育

從基本設計上來說,python3的目的就是沒有**相容的包袱情況下進行改進了python,相對於python2來說,python3有很多的改進,更加容易理解,也更加合理。

而且從應用的角度上來說,pypy、web框架、科學計算包、scrapy等常用模組都是支援python3的,但是部分比較陳舊的庫已經沒有人進行維護,也就沒有支援python3.

當我們進行日常使用的情況之下,可以直接寫python2\3相容的**,相對於來說,python2對於舊庫的支援更多一些,至少在學界還是比較流行的。

相對於來說,python3對於python學習來說更加具有好處,也是未來流行的趨勢,建議直接學習python3,未來使用率更為廣泛。無論是python2還是python3先學都不是問題的,差別並不是很大,主要還是靠自己,只要自己願意去學習,都可以選擇。

6樓:天天不看

> 1. print不再是語句,而是函式,比如原來是 print 'abc' 現在是 print('abc')

但是 python2.6+ 可以使用 from __future__ import print_function 來實現相同功能

> 2. 在python 3中,沒有舊式類,只有新式類,也就是說不用再像這樣 class foobar(object): pass 顯式地子類化object

但是最好還是加上. 主要區別在於 old-style 是 classtype 型別而 new-style 是 type型別

> 3. 原來1/2(兩個整數相除)結果是0,現在是0.5了

python 2.2+ 以上都可以使用 from __future__ import division 實現改特性, 同時注意 // 取代了之前的 / 運算

> 4. 新的字串格式化方法format取代%

錯誤, 從 python2.6+ 開始已經在str和unicode中有該方法, 同時 python3依然支援 % 算符

> 6. xrange重新命名為range

同時更改的還有一系列內建函式及方法, 都返回迭代器物件, 而不是列表或者 元組, 比如 filter, map, dict.items 等

> 7. !=取代 < >

python2 也很少有人用 < > 所以不算什麼修改

> 8. long重新命名為int

不完全對, python3 徹底廢棄了 long+int 雙整數實現的方法, 統一為 int , 支援高精度整數運算.

> 9. except exception, e變成except (exception) as e

只有 python2.5 及以下版本不支援該語法. python2.6 是支援的. 不算新東西

> 10. exec變成函式

類似 print() 的變化, 之前是語句.

簡單補充下

* 主要是類庫的變化, 組織結構變了些. 但功能沒變. urlparse - > urllib.parse 這樣的變化

* 最核心的變化它沒有說, 對 bytes 和 原生 unicode 字串的支援, 刪除了 unicode 物件, str 為原生 unicode 字串, bytes 替代了之前的 str 這個是最核心的.

* 其它... 貌似不怎麼重要了.

Python2和Python3都有什麼區別

1.print不再是語句,而是函式,比如原來是 print abc 現在是636f707962616964757a686964616f31333363383433 print abc 但是 python2.6 可以使用 from future import print function 來實現相同功...

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

print不再是語句,而是函式,比如原來是 print abc 現在是 print abc 但是 python2.6 可以使用 from future import print function 來實現相同功能 在python 3中,沒有舊式類,只有新式類,也就是說不用再像這樣 class foob...

詳解python2和python3的區別

1.效能 py3.0執行 pystone benchmark的速度比py2.5慢30 guido認為py3.0有極大的優化空間,在字串和整形操作上可 以取得很好的優化結果。py3.1效能比py2.5慢15 還有很大的提升空間。2.編碼 py3.x原始碼檔案預設使用utf 8編碼,這就使得以下 是合法...