一、性能
Python3.0速度比Python2.0慢一些
二、編碼
Py3.X源碼文件默認使用utf-8編碼,這就使得以下代碼是合法的:
>>中國 ='china' >>print(中國) china 1
三、語法
1、python3+ dict的.keys()、.items 和.values()方法返回迭代器,而之前的iterkeys()等函數(shù)都被廢棄。同時去掉的還有 dict.has_key(),用 in替代它吧,迭代器操作很像set,即不能使用索引,需要轉成list形式(list(dic.items)[index]。而python2+ dic.items() 返回的是list。
2、比較函數(shù)。Python2+:cmp(a,b)。
python3+:
operator.lt(a, b)#a <b 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()函數(shù)實現(xiàn)相同的功能。同樣的還有 exec語句,已經(jīng)改為exec()函數(shù)
例如:
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中帶上小數(shù)點/表示真除,%表示取余,//結果取整
6、xrange
在 Python 3 中,range() 是像 xrange() 那樣實現(xiàn)以至于一個專門的 xrange() 函數(shù)都不再存在(在 Python 3 中xrange() 會拋出命名異常)。
這里順便講一下python2的range()和xrange()的一些區(qū)別
a). range 生成一個list。
b).xrange()生成生成器,迭代時元素是逐個被創(chuàng)建的。所有xrange()節(jié)省內(nèi)存
c).xrange()不可以使用不支持列表切片,所以不用擔心越界問題
d).xrange()生成器和普通生成器稍有區(qū)別,對于同一個xrange對象,對它進行多次迭代,每次都會從頭開始。而常規(guī)生成器元素被生成出來之后就從生成器中剔除了
四、第三方庫
1、在windows下安裝Python第三方庫有時很麻煩,尤其是Python2。
Python3比Python2在windows下安裝第三方庫就方便很多。
比如:TensorFlow、fasttext等等