python初阶:面试常问小知识点

1、 is和==区别

  • is是比较两个变量是否指向同一内存地址,id(变量)相同
  • ==是比较两个变量的值

2、深拷贝和浅拷贝的区别

拷贝出来的对象的地址是否和原对象一样,也就是地址的复制还是值的复制的区别。

  • 浅拷贝是拷贝地址,原数据增加/修改不可变元素,不受影响;修改可变元素会受影响
  • 深拷贝是拷贝值,原数据无论如何改变都不影响。

3、join 和+区别

  • 1、连接list内字符串:都可以用。join效率更高(join只进行一次内存申请)
  • 2、两个字符串连接:只能用+

4、range、xrange

`ans = [[None] * R for _ in xrange(C)]`
    # _是表示循环range内内容,不用定义变量
python2 python3
xrange 结果是一个生成器,比range更省资源
range 结果是list 等同于py2的xrange

5、猴子补丁是什么?

属性在运行时的动态替换,叫做猴子补丁(Monkey Patch)
运行时动态替换、增加模块

6、负数index用来做什么

切片 list[:-1]
a[:] 可以对list和str切片 结果是原来的类型
split() 通过指定分隔符对str字符串进行切片 结果是list

7、——new——和——init——区别

init是初始化方法,new是真正的构造函数,只有集成了object的新式类中才有new
new至少有一个参数cls,代表要实例化的类,此参数在实例化时有python解释器自动提供,new必须有返回值,返回实例化出来的实例
init有参数self,就是这个new返回的实例,先运行new才运行init
init在new基础上可以完成一些其他初始化的动作,init不需要返回值。

posted @ 2021-02-25 16:52  蜘蛛网络  阅读(87)  评论(0编辑  收藏  举报