python3 和 Python2 的一些區別

2021-08-01 12:03:55 字數 2223 閱讀 4203

一、效能

python3.0速度比python2.0慢一些

二、編碼

py3.x原始碼檔案預設使用utf-8編碼,這就使得以下**是合法的:

>>中國 = 'china' 

>>print(中國)

china

三、語法

1、python3+ dict的.keys()、.items 和.values()方法返回迭代器,而之前的iterkeys()等函式都被廢棄。同時去掉的還有 dict.has_key(),用 in替代它吧,迭代器操作很像set,即不能使用索引,需要轉成list形式(list(dic.items)[index]。而python2+ dic.items() 返回的是list。

2、比較函式。python2+:cmp(a,b)。

python3+:

operator.lt(a, b)   #a operator.le(a, b)   #a<=b

operator.eq(a, b) #a=b

operator.ne(a, b)

operator.ge(a, b)

operator.gt(a, b)

operator.__lt__(a, b)

operator.__le__(a, b)

operator.__eq__(a, b)

operator.__ne__(a, b)

operator.__ge__(a, b)

operator.__gt__(a, b)

3、 python reload(sys)找不到,name 『reload』 is not defined

python2:

reload

(sys)

sys.setdefaultencoding

("utf-8")

在3.x被替換為

import importlib

importlib.reload(sys)

sys.setdefaultencoding(「utf-8」) 這種方式在3.x中被徹底遺棄

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

例如:

2.x: print 「the answer is」, 2*2

3.x: print(「the answer is」, 2*2)

2.x: print x, # 使用逗號結尾禁止換行

3.x: print(x, end=」 「) # 使用空格代替換行

2.x: print # 輸出新行

3.x: print() # 輸出新行

2.x: print >>sys.stderr, 「fatal error」

3.x: print(「fatal error」, file=sys.stderr)

2.x: print (x, y) # 輸出repr((x, y))

3.x: print((x, y)) # 不同於print(x, y)!

5、整除:python3中/表示真除,%表示取餘,//結果取整;python2中帶上小數點/表示真除,%表示取餘,//結果取整

6、xrange

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

這裡順便講一下python2的range()和xrange()的一些區別

a). range 生成乙個list。

b).xrange()生成生成器,迭代時元素是逐個被建立的。所有xrange()節省記憶體

c).xrange()不可以使用不支援列表切片,所以不用擔心越界問題

d).xrange()生成器和普通生成器稍有區別,對於同乙個xrange物件,對它進行多次迭代,每次都會從頭開始。而常規生成器元素被生成出來之後就從生成器中剔除了

四、第三方庫

1、在windows下安裝python第三方庫有時很麻煩,尤其是python2。

python3比python2在windows下安裝第三方庫就方便很多。

比如:tensorflow、fasttext等等

python3和python2的區別

1.效能 py3.0執行 pystone benchmark的速度比py2.5慢30 guido認為py3.0有極大的優化空間,在字串和整形操作上可 以取得很好的優化結果。py3.1效能比py2.5慢15 還有很大的提公升空間。2.編碼 py3.x原始碼檔案預設使用utf 8編碼,這就使得以下 是合...

Python2和Python3的比較

python2 python3 print fish print fish unicode 是單獨的 unicode utf 8 字串 b b china byte 和 bytearrays type b type bytes s b.decode 轉化成 string 型別b1 s encode ...

python3和python2的區別

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