py2和py3之間的不同

2022-08-20 06:30:13 字數 1673 閱讀 4322

很瑣碎,而print語法的變化可能是最廣為人知的了,但是仍值得一提的是: python 2 的 print 宣告已經被print()函式取代了,這意味著我們必須包裝我們想列印在小括號中的物件。

python 2 不具有額外的小括號問題。但對比一下,如果我們按照 python 2 的方式不使用小括號呼叫print函式,python 3 將丟擲乙個語法異常(syntaxerror)。

如果你正在移植**,這個變化是特別危險的。或者你在 python 2 上執行 python 3 的**。因為這個整除的變化表現在它會被忽視(即它不會丟擲語法異常)。

因此,我還是傾向於使用乙個float(3)/23/2.0代替在我的 python 3 指令碼儲存在 python 2 中的3/2的一些麻煩(並且反而過來也一樣,我建議在你的 python 2 指令碼中使用from __future__ import division

python 2 有 ascii str() 型別,unicode()是單獨的,不是byte型別。

現在, 在 python 3,我們最終有了unicode (utf-8)字串,以及乙個位元組類:bytebytearrays

在 python 2 中xrange()建立迭代物件的用法是非常流行的。比如:for迴圈或者是列表/集合/字典推導式。

這個表現十分像生成器(比如。「惰性求值」)。但是這個xrange-iterable是無窮的,意味著你可以無限遍歷。

由於它的惰性求值,如果你不得僅僅不遍歷它一次,xrange()函式 比range()更快(比如for迴圈)。儘管如此,對比迭代一次,不建議你重複迭代多次,因為生成器每次都從頭開始。

在 python 3 中,range()是像xrange()那樣實現以至於乙個專門的xrange()函式都不再存在(在 python 3 中xrange()會丟擲命名異常)。

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

在 python 3 中的另外乙個變化就是當對不可排序型別做比較的時候,會丟擲乙個型別錯誤。

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

py2和py3之間的區別

1.編碼 py2採用的是ascll編碼 py3採用unicode編碼 2.print py2中print是乙個關鍵字 py3中print是乙個函式,含有括號 3.input py2中raw input 這個函式返回乙個字串,但不會對輸入的字串進行計算 比如將它轉化成int或者float input ...

py2與py3的區別

py2與py3的區別 1 py2 的預設編碼是ascii,py3的預設編碼是utf 8 2 py2print函式可以用引號引起來也可以括起來執行,py3必須括號括起來執行 3 py2互動使用函式raw input 得到了str,input 得到了int資料型別,py3使用input 得到str 4 ...

py2 與 py3 中map的區別

如下 s timestamp,token,nonce s.sort sha1 hashlib.sha1 for i in s sha1.update i.encode utf 8 map sha1.update,s hashcode sha1.hexdigest 在py3環境下時算出來的雜湊值怎麼都...