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) 
[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='
', file=sys.stdout, flush=False)

其中,value1,value2等等表示要打印的值,sep是分隔符,默认是空格,也就是用空格分开,end表示结尾,如果想要不换行,就可以把 " " 换成其他,如空格等。

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