偶尔会面试一下,然后好奋发涂墙
1.问题:python的深copy和浅copy
实现:
深copy调用copy.deepcopy()
浅copy调用copy.copy()
区别:
一般变量的赋值是传递对象的引用,譬如
a=[1,2,3]
b=a
b.append(10)
打印值会发现a和b的值相同
我们都知道python中的对象之间赋值是按照引用传递,我们上边提供的拷贝方法是引入了copy模块
如果一个对象中包含子对象,那么,浅拷贝只会拷贝父对象,子对象还是引用,随原先的值变化而变化
深拷贝是拷贝父对象及包含的子对象,两个对象完全独立,互相改变不会影响
举个栗子
2.问题:Python何种情况容易内存泄漏
首先,我们知道python有gc机制,但是,凡是代码,就有可能会出现内存泄漏
python的gc机制
python中一切皆对象,所以针对对象,引入了引用计数,并基于引用计数,实现垃圾回收机制
一般认为有gc回收,可以高枕无忧,但是,当碰到有__del__()函数对象间的循环引用是导致内存泄漏的主要原因
没有上述函数的对象间的循环引用是可以被拉力器回收的
目前为止,没有使用过循环引用,所以,当问我这个问题就懵逼了
3.问题:python有哪些数据类型
python的数据类型包括,int,booleal,float,string,list,dict,tuple,set,data
这里主要考察,一个是元祖tuple,与列表类似,其元素的值是初始化就不会再变了
一个是set和list差别,这里set中没有重复元素,其创建方法是set()
我们都知道,Java语言中数组中元素类型必须相同
4,问题:lambda函数
什么是lambda函数,称为匿名函数,匿名函数就是没有函数名的函数
譬如:a=lambda x,y:x+y
a(1,2)
5,问题:python自省
何为自省,程序在运行时知道对象的类型,而不是提前定义好类型。
6,注意
python的is是对比的地址,==是对比的值