【面试准备】Python基础知识

目录


  • Python2和Python3的区别
  1. print在py2里是类,在py3里是函数(故必须print后用括号)
  2. py2默认的字符串类型默认是 ASCII,p23中默认的字符串类型是 Unicode
  3. xrange和range,py2中xrange返回一个生成器,range返回一个list;py3中没有xrange只有range,返回的是一个迭代器
  4. py2/的结果是整形,py3中是浮点型
  5. 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循环的对象。


参考

  1. 关于python的面试题. https://github.com/kenwoodjw/python_interview_question
  2. 图解Python深拷贝和浅拷贝. https://www.cnblogs.com/wilber2013/p/4645353.html#_nav_2
  3. Python 最常见的 170 道面试题解析:2019 最新. https://blog.csdn.net/valada/article/details/90761019
原文地址:https://www.cnblogs.com/lvjincheng/p/11384373.html