python3+ 和 Python2+的一些区别

一、性能
Python3.0速度比Python2.0慢一些
二、编码
Py3.X源码文件默认使用utf-8编码,这就使得以下代码是合法的:
>>中国 ='china'>>print(中国)china1

python3+ 和 Python2+的一些区别

文章插图
 
三、语法
【python3+ 和 Python2+的一些区别】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 <boperator.le(a, b)#a<=boperator.eq(a, b)#a=boperator.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 importlibimportlib.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等等




    推荐阅读