一、性能
Python3.0速度比Python2.0慢一些
二、编码
Py3.X源码文件默认使用utf-8编码,这就使得以下代码是合法的:
>>中国 ='china' >>print(中国) china 1
三、语法
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 <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()函数实现相同的功能。同样的还有 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等等