偶爾會面試一下雁刷,然后好奮發(fā)涂墻
1.問題:python的深copy和淺copy
實(shí)現(xiàn):
深copy調(diào)用copy.deepcopy()
淺copy調(diào)用copy.copy()
區(qū)別:
一般變量的賦值是傳遞對象的引用友存,譬如
a=[1,2,3]
b=a
b.append(10)
打印值會發(fā)現(xiàn)a和b的值相同
我們都知道python中的對象之間賦值是按照引用傳遞抵乓,我們上邊提供的拷貝方法是引入了copy模塊
如果一個(gè)對象中包含子對象当纱,那么韭赘,淺拷貝只會拷貝父對象揍愁,子對象還是引用拾氓,隨原先的值變化而變化
深拷貝是拷貝父對象及包含的子對象冯挎,兩個(gè)對象完全獨(dú)立,互相改變不會影響
舉個(gè)栗子
2.問題:Python何種情況容易內(nèi)存泄漏
首先咙鞍,我們知道python有g(shù)c機(jī)制房官,但是,凡是代碼续滋,就有可能會出現(xiàn)內(nèi)存泄漏
python的gc機(jī)制
python中一切皆對象翰守,所以針對對象,引入了引用計(jì)數(shù)疲酌,并基于引用計(jì)數(shù)蜡峰,實(shí)現(xiàn)垃圾回收機(jī)制
一般認(rèn)為有g(shù)c回收,可以高枕無憂,但是事示,當(dāng)碰到有__del__()函數(shù)對象間的循環(huán)引用是導(dǎo)致內(nèi)存泄漏的主要原因
沒有上述函數(shù)的對象間的循環(huán)引用是可以被拉力器回收的
目前為止早像,沒有使用過循環(huán)引用,所以肖爵,當(dāng)問我這個(gè)問題就懵逼了
3.問題:python有哪些數(shù)據(jù)類型
python的數(shù)據(jù)類型包括卢鹦,int,booleal劝堪,float冀自,string,list秒啦,dict熬粗,tuple,set余境,data
這里主要考察驻呐,一個(gè)是元祖tuple,與列表類似芳来,其元素的值是初始化就不會再變了
一個(gè)是set和list差別含末,這里set中沒有重復(fù)元素,其創(chuàng)建方法是set()
我們都知道即舌,Java語言中數(shù)組中元素類型必須相同
4佣盒,問題:lambda函數(shù)
什么是lambda函數(shù),稱為匿名函數(shù)顽聂,匿名函數(shù)就是沒有函數(shù)名的函數(shù)
譬如:a=lambda x肥惭,y:x+y
a(1,2)
5,問題:python自省
何為自省紊搪,程序在運(yùn)行時(shí)知道對象的類型蜜葱,而不是提前定義好類型。
6耀石,注意
python的is是對比的地址笼沥,==是對比的值