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不需要返回值。
——————————————————————————————————————————————————————————————————————————
本文作者:蜘蛛酱的网络
关于博主:评论和私信会在第一时间回复。或者直接私信我。
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.