Python2和Python3的一些区别
最近在改项目中的python代码,之前用python2写的,现在准备改成python3,遇到一些小情况,在此记录一下:
(1)除法的区别
在python2中,对于两个int变量进行 “ / ” 除法操作,得到的结果是整数,小数部分直接舍去。
而在python3中, 单斜线 “ / ” 表示的就是实际的除法,而对应于python2的整除模式要用双斜杠 “ // ” 来代替
import sys
sys.version
Out[69]: '3.5.2 (default, Nov 23 2017, 16:37:01) \n[GCC 5.4.0 20160609]'
a = 5
b = 3
a/b
Out[72]: 1.6666666666666667
a//b
Out[73]: 1
(2)print的区别
打印输出函数print在py2和3中也不同,在py2中,print可以是一个语法结构,可以直接写成 print xxx,当然,也可以用函数的形式写成print(xxx)的形式。
而在py3中,print只保留了函数的功能,因此是一个内置函数了,因此只能用括号括起来才能使用。
print函数的原型为:
print(value1, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
其中,value1,value2等等表示要打印的值,sep是分隔符,默认是空格,也就是用空格分开,end表示结尾,如果想要不换行,就可以把 " \n " 换成其他,如空格等。
print(a,b)
5 3
print(a,b,sep=',')
5,3
print(a,b,end=' '); print('end')
5 3 end
print(a,b); print('end')
5 3
end
(3)dict中查找键值的区别
在python2中,dict又一个成员函数has_key()
,可以用来看有没有某个key值。在python3中,这个函数被“__contains__”
代替,用来查看是否有某个键值。
a = dict({'air':50, 'ball':1, 'cat':3})
a
Out[88]: {'air': 50, 'ball': 1, 'cat': 3}
a.__contains__('air')
Out[89]: True
a.__contains__('dog')
Out[90]: False
a.has_key('cat')
Traceback (most recent call last):
File "<ipython-input-91-10d7eb410811>", line 1, in <module>
a.has_key('cat')
AttributeError: 'dict' object has no attribute 'has_key'
ps: 最近毕业事务繁忙,日常时间都用来写论文和做实验了,因此博客好久没更新。。。
本周已经答辩完啦~顺利从master candidate变成了一只master
所以以后将继续用这个blog记一些笔记和总结
近期的一些准备关注的方向:CA、NLP、小样本、医学图像处理。可能会整理一些相关的论文笔记。
伤情最是晚凉天,憔悴斯人不堪怜。 邀酒摧肠三杯醉,寻香惊梦五更寒。 钗头凤斜卿有泪,荼蘼花了我无缘。 小楼寂寞新雨月,也难如钩也难圆。 ——马 东
PS:(补充)
reduce函数的位置
python2中,reduce可以直接使用,在python3中,reduce在functools模块中,需要先进行引入:
from functools import reduce
2019-11-12 17:59:48