Python入門:Python 2與Python3有什麼區別?
今天來說說Python版本上的差異。目前,Python的版本主要包括兩種,Python 2與Python 3系列。先介紹一下它們的背景,幫助大家更好的理解。Python 是一種極具可讀性和通用性的程式語言。它的開發團隊有一個重要的基礎目標,就是使語言使用起來很有趣。Python 易於設定,並且是用相對直接的風格來編寫,對錯誤會提供即時反饋。
Python 2
Python 2 釋出於 2000 年年底,意味著較之先前版本,這是一種更加清晰和更具包容性的語言開發過程。而先前版本的 Python 應用的是 PEP (Python 增強協議),這種技術規範能向 Python 社群成員提供資訊或描述這種語言的新特性。此外,Python 2 還包括了更多的程式性功能,包括能自動化地管理記憶體的迴圈檢測垃圾收集器,增加了對 Unicode 的支援以實現字元的標準化,並採用列表綜合的方式以在現有列表基礎上建立列表。 隨著 Python 2 的不斷髮展,更多的功能被新增進來,包括將 Python 的型別和類在 Python 2.2 版本中統一為一層。
Python 3
Python 3 被視為 Python 的未來,是目前正在開發中的語言版本。作為一項重大改革,Python 3 於 2008 年年末釋出,以解決和修正以前語言版本的內在設計缺陷。Python 3 開發的重點是清理程式碼庫並刪除冗餘,清晰地表明只能用一種方式來執行給定的任務。對 Python 3.0 的主要修改包括將 print 語句更改為內建函式,改進整數分割的方式,並對 Unicode 提供更多的支援。起初,Python 3的採用很緩慢,因為該語言不能向後相容 Python 2,這就需要人們決定該使用哪個版本的語言。此外,許多封裝庫庫只適用於 Python 2,但是由於 Python 3 背後的開發團隊重申了終止對 Python 2 的支援,促使更多的庫被移植到 Python 3 上來。從對 Python 3 提供支援的 Python 包的數量可以看出,Python 3 已得到越來越多的採用,在撰寫本文時,支援它的包就已包括了 339 個最受歡迎的 Python 包。
目前,Python 3系列最常使用的就是3.6版本了,但是官網已經更新至3.7,但是這些已經不重要了,同一系列之間的差異不會太大。
Python 2.7
在 2008 年 Python 3.0 的釋出之後,Python 2.7 於 2010 年 7 月 3 日釋出,並計劃作為 2.x 版本的最後一版。釋出 Python 2.7 的目的在於,通過提供一些測量兩者之間相容性的措施,使 Python 2.x 的使用者更容易將功能移植到 Python 3 上。這種相容性支援包括了 2.7 版本的增強模組,如支援測試自動化的 unittest,用於解析命令列選項的 argparse,以及更方便的集合類。
Python 2.7 具有 Python 2 和 Python 3.0 之間的早期迭代版本的獨特位置,它因為對許多具有魯棒性的庫具有相容性,對於程式設計師而言一直是非常流行的選擇。當我們今天討論 Python 2 時,我們通常指的是 Python 2.7 版本,因為它是最常用的版本。
然而,Python 2.7 被認為是一種遺留語言,且它的後續開發,包括現在最主要的 bug 修復,將在 2020 年完全停止。但是目前官閘道器於它的版本更新還在持續進行。
以上說了這麼多,就是想告訴大家,能用Python 3,就儘量用。雖然一些老的教科書是以Python 2為基礎來講的,但是不影響你使用Python3。下面我就來列一下二者在使用上的差異,這是別人總結的,我修改了一下其中的錯誤。
1.字串型別
python中有兩種字元型別:位元組字串和文字字串。
2.預設字元
python2中預設的字串型別預設是ASCII,python3中預設的字串型別是Unicode。
3.print
python2中,print是個特殊語句,python3中print是函式。
python2:print 'hello word!'
python3:print('hello word!')
4.除法 /
python2中/的結果是整型,python3中是浮點型別。
5.匯入
python2中的包匯入順序:標準庫—相對倒入(即當前目錄)—絕對匯入(sys.path)
python3中的包匯入順序:標準庫—絕對匯入(如果想要相對匯入,使用from .moudel)
6.類
python2中預設類是舊式類,需要顯式繼承新式類(object)來建立新式類。
python3中完全移除舊式類,所有類都是新式類,但仍可顯式繼承object類。
7.元類宣告
python2中宣告元類:__metaclass__ = MetaClass
python3中宣告元類:class newclass(metaclass=MetaClass):pass
8.異常
python2中引發異常:raise ValueError,'Invalid value'
python3中引發異常:raise ValueError('Invalid value')——在python2中也生效
9.處理異常
python2中處理異常:
try:
raise ValueError,'Invalid value'
except ValueError,e:
pass
python3中處理異常:
try:
raise ValueError,'Invalid value'
except ValueError as e:#在python2中也生效
pass
python2中異常鏈會丟失原始異常資訊,即:處理B異常時引發了A異常,B異常資訊會丟失。
python3中將原始異常資訊賦值給__context__屬性。並且可以顯式指定一個異常作為另一個異常的子句:raise DatabaseError() from IOError()
10.字典
python2中的dict類中的keys、values和items均返回list物件,iterkeys、itervalues和iteritems返回生成器物件。
python3中移除了list、只返回一個生成器的物件,只保留檢視(生成器),但方法名為:keys、values和items。
11.模組合併
python2中的StringIO和cStringIO合併為python3中的io。
python2中的pickle和cPickle合併為python3中的pickle。
python2中的urllib、urllib2和urlparse合併為python3中的urllib。
12.重新命名模組
後續發展
Python 3 和 Python 2 之間的最大區別不是語法上的,而是事實上 Python 2.7 將在 2020 年失去後續的支援,Python 3 將繼續開發更多的功能和修復更多的錯誤。最近的發展包括格式化的字串,類建立的簡單定製,和用一種更乾淨的句法方式來處理矩陣乘法。Python 3 的後續開發意味著,開發人員可以對問題被及時解決抱有信心,並且隨著時間的推移更多的功能將被新增進來,程式也會變得更加有效。
寫在最後
前幾天有私信我要Python的學習資料,我連夜整理了一些有深度的Python教程和參考資料,從入門到高階的都有,檔案已經打包好了,正在學習Python的同學可以免費下載學習學習。檔案下載方式:點選我的頭像,關注後私信回覆“資料”即可下載。首先把程式碼擼起來!首先把程式碼擼起來!首先把程式碼擼起來!重要的事說三遍,哈哈。“程式設計是門手藝活”。什麼意思?得練啊。
相關文章
- Python2和Python3有何區別?小白入門必看!Python
- 【Python入門教程】SQL和Python有什麼區別?PythonSQL
- Python2和Python3的區別?Python入門學習Python
- Python中異常與錯誤有什麼區別?Python入門教程Python
- Python中tuple和list有什麼區別?Python入門!Python
- Python2與Python3的區別Python
- Python IDE和直譯器有什麼區別?Python入門教程PythonIDE
- 學Python用哪個版本?Python2與Python3有何區別?Python
- 新手學python哪個版本好?Python2與Python3有何區別?Python
- 什麼是python?與PHP有什麼區別?PythonPHP
- Python中for迴圈和while迴圈有什麼區別?Python入門教程PythonWhile
- Python2與Python3有何區別?選擇哪個合適?Python
- Python2和Python3的區別Python
- 學Python用哪個版本?Python3和Python2有何區別?Python
- 自動化測試與軟體測試有什麼區別?Python入門教程Python
- Python的集合與列表有什麼區別?Python學習教程Python
- python和nodejs有什麼區別PythonNodeJS
- Python開發中TCP和UDP區別是什麼?Python入門教程PythonTCPUDP
- python3和python2中的filter區別PythonFilter
- Java和Python是什麼?有什麼區別?JavaPython
- Python中異常是什麼意思?與錯誤有什麼區別?Python
- 什麼是Python直譯器?和Python IDE有什麼區別?PythonIDE
- Python語言中=和==有什麼區別?Python
- python3入門與進階(二)Python
- Python2 和 Python3 的區別及相容技巧Python
- PHP與Python有什麼區別?各具有哪些特點?PHPPython
- Python IDLE和Python的區別!Python入門教程Python
- Python學習教程_Python語言中=和==有什麼區別?Python
- Python這麼火,它與其他程式語言有什麼區別?Python
- Python和C語言有什麼區別?PythonC語言
- cython和python分別是什麼?區別有哪些?Python
- Python語言中/與//的區別是什麼?Python
- 【Python入門必看】Python中Cookie和Session的區別與聯絡!PythonCookieSession
- python3 爬蟲入門Python爬蟲
- 初學Python有什麼開發工具合適?Python入門!Python
- python3的關鍵字有什麼Python
- cookie和session有什麼區別?Python學習!CookieSessionPython
- python和Java、C、ruby、PHP有什麼區別?PythonJavaPHP