新手入門選擇Python2還是Python3

1. 前言

Python的發展很快,幾乎每年都在版本迭代。目前Python有兩個主要版本,一個是python2.x,另一個是python3.x。

兔子先生最早接觸Python的時候,使用的是python2.3,用來做垂直領域的爬蟲開發。

2. Python2與Python3的主要區別

新手入門選擇Python2還是Python3

Python2 與 Python3 的區別很多,但是總的來說有以下幾點:

2.1 Python3 是發展趨勢,Python2不再維護

Short version: Python 2.x is legacy, Python 3.x is the present and future of the language

以上是摘錄於wiki.python.org,龜叔 (Guido van Rossum) 的想法是不再對2.7版本進行向後兼容。

目前 Python2 發展普及了十多年,在一些公司的IT建設項目上,佔據不小的分量,例如搜狐的個人郵箱,就是採用 Python2.6 開發並一直維護。

儘管 Python2 有如此輝煌的過去,但是由於 Python 社區的推薦和 更多 Python3 擁護者的出現,越來越多的企業轉投 Python3 的懷抱並已經開始行動。

2.2 Python2 與 Python3 的庫不兼容

Python2 與 Python3 本身並不兼容,這種情況下,對於庫的選擇和使用會讓人抓狂。因為版本不兼容,很容易引起程序運行異常,甚至直接崩潰。

那麼我們該如何解決這個問題呢,其實當選擇使用這個庫的之前,可以先了解它支持在哪些 Python 版本上運行。

舉例來說, requests 當前的最新版本為 2.23.0,在 https://pypi.org/project/requests/ 上的在線文檔上,清楚說明了兼容Python2.7,Python3.5-Python3.8 的版本,所以如果你的 Python 版本在上述的範圍內,則可以放心使用。

新手入門選擇Python2還是Python3

2.3 Python3 對unicode支持更好

Unicode 和 ASCII 相比,可以支持更多的語言符號,例如羅馬字母、中日韓文、Emoj 表情等。

在 Python3 中字符串默認是 Unicode 的編碼,而 Python2 則是默認 ASCII 碼,如果要指定為 Unicode 則需要在字符串前加個 u 作為前綴。

<code>#--------------------------------
#python2 中字符串編碼示例

# 默認為 ASCII 碼
xtuz_url = 'https://www.xtuz.net'

# 顯示指定為 Unicode 碼
xtuz_url = u'https://www.xtuz.net'


#---------------------------------
#python3 中字符串編碼示例

xtuz_url = 'https://www.xtuz.net'/<code>

2.4 Python3 優化了整數的除法

在 Python2 中,整數相除的情況下,即使有結果含有小數,也會丟棄,僅取整數處理。

例如:

<code>Python 2.7.17 (default, Nov  7 2019, 10:07:09) 
[GCC 7.4.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> print 10/3
3
>>> print 11/3
3/<code>

在 Python3 中,上述情況則會自動轉換成浮點數處理。從開發者的角度來看,這樣的結果更直觀。

<code>Python 3.6.8 (default, Jan 14 2019, 11:02:34) 
[GCC 8.0.1 20180414 (experimental) [trunk revision 259383]] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> print (10/3)
3.3333333333333335
>>> print (11/3)
3.6666666666666665/<code>

2.5 print 語法的調整

Python3 中為了統一函數的表達方式,對 print 表達式進行了調整,必須要求有 ()

<code>## python2中的輸出方式
print 'https://www.xtuz.net'

## python3中的輸出方式
print('https://www.xtuz.net')/<code>

3. Python3取代Python2的原因

我們瞭解 Python2 與 Python3 的主要區別後,會不會感覺不就是 print 表達方式不同麼?不就是在編碼上有些區別嗎?為什麼要出現一個兩個不兼容的大版本呢?

兔子先生在搜索了相關資料,總結來說有兩個主要原因:

  1. 字符串和二進制數據在 Python2 中的含義相同,在《Zen of Python》中有個原則,"there should be one -- and preferably only one -- obvious way to do it",顯然Python2 違背了這條原則。
  2. Python2 對 Unicode 的支持不友好,Python 對自己的定位是世界上所有人都能方便使用,而默認以 Unicode 編碼方式來開發代碼文本,更加更合適。

4. 新手入門如何選擇正確的版本

兔子先生建議,能使用 Python3 則儘量使用。但是有以下情況可以考慮使用 Python2:

  • 運行環境不支持 - 某些在封閉的開發環境下,並不支持新安裝Python3,例如CentOS的某些版本。
  • 依賴庫不支持 - 某些項目用 Python2 開發,處於維護階段,依賴庫尚未支持Python3版本,如果強行遷移會產生較大的工作量和未知風險。

5. 更多內容

原文來自兔子先生網站:https://www.xtuz.net/detail-131.html

如果你對Python語言感興趣,可以關注我,或者關注我的微信公眾號:xtuz666


分享到:


相關文章: