python 版本区别面试题
4. python2 与3 的区别
这部分的面试题,原本就不多,而且随着社区向python3的整体迁移,需要维护的Python2的老代码会越来越少,但你多了解一些两者的区别,并不是什么坏事
4.1 python2和python3的range(100)的区别
难度指数: ★
重要指数: ★
python2 中,range函数返回的是一个列表,而python3 中range函数返回的是一个可迭代对象。显然,python3的range更加节省内存。
4.2 range&xrange有什么区别?
难度指数: ★
重要指数: ★
这是一个只有在python2中才存在的问题,range返回的是一个列表,而xrange返回的是一个生成器,因此xrange更加节省内存。
使用range,往往是为了进行遍历,那么这种情况下,建议使用xrange,尤其是遍历次数较多的情况下,生成那么大的一个列表是完全没有必要的。
如果你的目的就是为了生成一个列表,那另当别论。
4.3 Python3和Python2中 int 和 long的区别?
难度指数: ★
重要指数: ★
在python2中,long类型是一个比int类型更大的数据类型,而到了python3, 已经没有long类型了,而是统一到了int类型。
python3的int类型,已经远远的超出了其他编程语言long类型可表达的数据范围,你几乎不用担心在python中使用int表示数值过大导致溢出,至于原理,则需要深入到源码来探究,感兴趣的朋友可以阅读Python 3 的 int 类型详解(为什么 int 不存在溢出问题?)
4.4 Python2和3的区别
python3 相比于python2的变化非常大,有人甚至评论说几乎是两种不同的语言,那么多变化,我们不能也没有必要逐个记忆,抓住一些重点变化即可
- python2中,print是语句,python3中print是函数
- python2 字节字符串和文本字符串分别是str和unicode, 在python3 中,字节字符串和文本字符串分别是bytes和str
- python2中默认的字符串类型默认是ASCII,python3中默认的字符串类型是Unicode。
- python2中/的结果是整型,python3中是浮点类型
- python2中的包导入顺序:标准库—相对倒入(即当前目录)—绝对导入(sys.path; python3中的包导入顺序:标准库—绝对导入(如果想要相对导入,使用from .moudel)
- python2中默认类是旧式类,需要显式继承新式类(object)来创建新式类;python3中完全移除旧式类,所有类都是新式类,但仍可显式继承object类
- python2中声明元类:__metaclass__ = MetaClass; python3中声明元类:class newclass(metaclass=MetaClass):pass
- python2中的StringIO和cStringIO合并为python3中的io;python2中的pickle和cPickle合并为python3中的pickle;python2中的urllib、urllib2和urlparse合并为python3中的urllib