python3 x與2 x的一些變化

2021-06-27 17:32:43 字數 2139 閱讀 8343

1.        使用__future__模組

python 3.x 介紹的 一些python 2 不相容的關鍵字和特性可以通過在 python 2 的內建__future__模組匯入。如果你計畫讓你的**支援 python 3.x,建議你使用__future__模組匯入。例如,如果我想要 在python 2 中表現 python 3.x 中的整除,我們可以通過如下匯入

from __future__import division

2.        print函式

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

3.        integer division

在 python 2 上執行 python 3 的**該變化很危險,因為不會丟擲語法異常。因此,我還是傾向於使用乙個float(3)/2或3/2.0代替在我的 python 3 指令碼儲存在 python 2 中的3/2的一些麻煩(並且反而過來也一樣,建議在你的 python 2 指令碼中使用from __future__ import division)

4.        unicode

python 2 有ascii str()型別,unicode()是單獨的,不是 byte 型別。在 python 3,有了unicode (utf-8)字串,以及位元組類:byte和bytearrays。

5.        xrange

在 python 2 中xrange()建立迭代物件的用法是非常流行的。比如: for 迴圈或者是列表/集合/字典推導式。這個比較像十分像生成器。但是xrange-iterable是無窮的,意味著無限遍歷。由於它的惰性求值,如果你不得僅僅不遍歷它一次,xrange()函式 比range()更快(比如 for 迴圈)。儘管如此,對比迭代一次,不建議你重複迭代多次,因為生成器每次都從頭開始。

6.        raising exceptions

python 2 接受新舊兩種語法標記,在 python 3 中如果我不用小括號把異常引數括起來就會阻塞(並且反過來引發乙個語法異常)。

7.        handling exceptions

8.        next()函式 和.next()方法

next() (.next())是乙個普通的使用函式(方法),這裡有另外乙個語法改變(或者是實現上改變了),值得一提的是:在 python 2.7.5 中函式和方法都可以使用,next()函式在 python 3 中一直保留著(呼叫.next()丟擲屬性異常)。

9.        for 迴圈變數和全域性命名空間洩漏

10.    比較不可排序型別

11.    通過input()解析使用者的輸入

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

12.    返回可迭代物件,而不是列表

在 python 3 中一些方法和函式返回迭代物件 -- 代替 python 2 中的列表。因為我們通常那些遍歷只有一次,我認為這個改變對節約記憶體很有意義。儘管如此,它也是可能的,相對於生成器 --- 如需要遍歷多次。它是不那麼高效的。

而對於那些情況下,我們真正需要的是列表物件,我們可以通過list()函式簡單的把迭代物件轉換成乙個列表。

附:python3

中一些經常使用到的不再返回列表的函式和方法:

zip()

map()

filter()

dictionary's .keys() method

dictionary's .values() method

dictionary's .items() method

Python2 x與Python3 x的區別

這個星期開始學習python了,因為看的書都是基於python2.x,而且我安裝的是python3.1,所以書上寫的地方好多都不適用於python3.1,特意在google上search了一下3.x和2.x的區別。特此在自己的空間中記錄一下,以備以後查詢方便,也可以分享給想學習python的frie...

python2 X與python3 X的區別

前言 最近在復現一些大牛的演算法,經常會遇到一些關於版本不相容的問題,導致演算法執行錯誤。甚是討厭,坑位如下。問題1 float object cannot be interpreted as an integer。原因 在python2,只留下了整數部分,去掉了小數,是int型。在python3裡...

Python2 x與Python3 x的區別

python2是用ascii碼作為預設編碼,因此在專案 中如果出現中文是會報錯 需要新增 encoding utf 8 標頭檔案來解決中文亂碼問題 python3中 表示真除,表示取餘,表示地板除 結果取整 python2中 表示根據除數被除數小數點位得到結果,同樣表示地板除 統一一下 python...