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

2021-06-28 17:18:33 字數 5067 閱讀 3035

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 這個是最核心的.

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

python3如何給裝飾器傳遞引數

def add func def wrap num ret func num if num 0 print test執行結來束自 return ret return wrap 你的遞迴bai函式有問題du哦zhi 沒有dao終止 python 帶可變引數的裝飾器怎麼用 裝飾器本身是用來是為一個函式是...

如何使用Python3讀寫INI配置檔案

import configparser 生成config物件 conf configparser.configparser 用config物件讀取配置檔案 conf.read ini 從ini配置檔案中獲取資訊 a conf.get xx yy print a 結果為 zz ini xx yy zz...

全棧和python的區別

1,全棧指的是人。2,python是一門程式語言。全棧 1,公司創始人 co founder全棧 技術 產品 設計 運營 銷售 法務 融資 pr.作為公司創始人,在早期真的就是chief everything officer.你必須至少在上述的若干方面精通其中的某一項或幾項,對於其它項也要有一定的涉...