<返回更多

python3+ 和 Python2+的一些区别

2019-08-06    
加入收藏

一、性能

Python3.0速度比Python2.0慢一些

二、编码

Py3.X源码文件默认使用utf-8编码,这就使得以下代码是合法的:

>>中国 ='china'
>>print(中国)
china
1
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 <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等等

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>