新手用python2還是3

lvxfcjf發表於2021-09-11

新手用python2還是3

想學習Python的人都會有一個困惑,那就是Python目前有兩個版本Python2和Python3,Python2與Python3有何區別,兩個版本該學習哪個呢?

python3 和 python2 是不相容的,而且差異比較大,python3是不向下相容的,但是絕大多陣列件和擴充套件都是基於python2的。目前實際應用中大部分暫不考慮 Python3,有的時候注意寫相容 2/3 的程式碼。用 Python2 為主的寫新程式碼時要考慮以後遷移到 Python3 的可能性。據資料統計顯示目前10% 使用 Python 3;20% 既使用Python 2也使用Python 3,Python2用的更多;70% 使用Python 2。

其實python是linux上最常用的軟體之一,但是linux目前的版本大部分還是使用python2的,而且,在linux上依賴python2的程式更多一些,所以 Python3 要代替 python2 成為主流還需要幾年的時間。如果為了找工作還是學Python 2,學會了Python 2,由Python 2轉到python3也不難。

說了半天,Python2與Python3到底有何區別呢?

1.效能

Py3.0執行pystone benchmark的速度比Py2.5慢30%。Guido認為Py3.0有極大的最佳化空間,在字串和整形操作上可以取得很好的最佳化結果。

Py3.1效能比Py2.5慢15%,還有很大的提升空間。

2.編碼

Py3.X原始碼檔案預設使用utf-8編碼,這就使得以下程式碼是合法的:

   >>> 中國 = 'china'
   >>>print(中國)
   china

3. 語法

1)去除了<>,全部改用!=

2)去除``,全部改用repr()

3)關鍵詞加入as 和with,還有True,False,None

4)整型除法返回浮點數,要得到整型結果,請使用//

5)加入nonlocal語句。使用noclocal x可以直接指派外圍(非全域性)變數

6)去除print語句,加入print()函式實現相同的功能。同樣的還有 exec語句,已經改為exec()函式

4. 字串和位元組串

1)現在字串只有str一種型別,但它跟2.x版本的unicode幾乎一樣。
2)關於位元組串,請參閱“資料型別”的第2條目

5.資料型別

1)Py3.X去除了long型別,現在只有一種整型——int,但它的行為就像2.X版本的long

2)新增了bytes型別,對應於2.X版本的八位串,定義一個bytes字面量的方法如下:

>>> b = b'china'
>>> type(b)
<type 'bytes'>

str物件和bytes物件可以使用.encode() (str-> bytes) or .decode() (bytes -> str)方法相互轉化。

>>> s = b.decode()
>>> s
'china'
>>> b1 = s.encode()
>>> b1
b'china'

3)dict的.keys()、.items 和.values()方法返回迭代器,而之前的iterkeys()等函式都被廢棄。同時去掉的還有

dict.has_key(),用 in替代它吧

更多學習內容,請點選

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/3486/viewspace-2836142/,如需轉載,請註明出處,否則將追究法律責任。

相關文章