【面试准备】Python基础知识
目录
- Python2和Python3的区别
- print在py2里是类,在py3里是函数(故必须print后用括号)
- py2默认的字符串类型默认是 ASCII,p23中默认的字符串类型是 Unicode
- xrange和range,py2中xrange返回一个生成器,range返回一个list;py3中没有xrange只有range,返回的是一个迭代器
- py2
/
的结果是整形,py3中是浮点型 - py2中声明元类:
_metaclass_ = MetaClass
,py3 中声明元类:class newclass(metaclass=MetaClass):pass
关于xrange和range,自己亲手做了速度测试,同样迭代1e8次,结果如下:
py2: range24.5275207 xrange12.9872725
py3: range14.4299495
- 对象赋值、深拷贝与浅拷贝有何区别?
可以参考图解Python深拷贝和浅拷贝,要注意的是文中说的对象赋值是可变对象的赋值。
不可变对象包括数值,元组,字符串。
浅拷贝:创建一个新对象,但包含对源对象的引用;
深拷贝:创建一个对象,并递归复制其包含的所有对象。
若为列表(List)对象的浅拷贝,给浅拷贝到的列表追加元素a不会变,但修改新列表中新元素a也会相应变化。
-
列表与元组的区别?
列表中元素可修改,元组(tuple)元素不可修改。 -
is和的区别?
is是比较地址是否相等,是比较值是否相等。 -
了解python中的三元运算子吗?
Python中的三元运算子:... if ... else ...
,
功能和C++中的... ? ... : ...
类似。 -
什么类型可以作为字典中的key
不可变类型,包括数字型、字符串型、元组型。 -
可迭代对象、迭代器(iterator)和生成器(generator)
生成器(Generator):在python中,一边循环一边计算的机制,称为生成器。
迭代器:迭代器是一个可以记住遍历的位置的对象。可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator。
可迭代对象:可以直接作用于for循环的对象。
参考
- 关于python的面试题. https://github.com/kenwoodjw/python_interview_question
- 图解Python深拷贝和浅拷贝. https://www.cnblogs.com/wilber2013/p/4645353.html#_nav_2
- Python 最常见的 170 道面试题解析:2019 最新. https://blog.csdn.net/valada/article/details/90761019