python常見(jiàn)面試題15道 (附答案)你必須得會(huì)_第1頁(yè)
已閱讀5頁(yè),還剩33頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、python常見(jiàn)面試題15道 (附答案)你必須得會(huì)問(wèn)題1到底什么是python?你可以在回答中與其他技術(shù)舉行對(duì)照(也鼓舞這樣做)。答案下面是一些關(guān)鍵點(diǎn):python是一種說(shuō)明型語(yǔ)言。這就是說(shuō),與c語(yǔ)言和c的衍生語(yǔ)言不同,python代碼在運(yùn)行之前不需要編譯。其他說(shuō)明型語(yǔ)言還包括php和ruby。python是動(dòng)態(tài)類(lèi)型語(yǔ)言,指的是你在聲明變量時(shí),不需要解釋變量的類(lèi)型。你可以挺直編寫(xiě)類(lèi)似x=111和x="i&39;mastring"這樣的代碼,程序不會(huì)報(bào)錯(cuò)。python十分適合面對(duì)對(duì)象的編程(oop),由于它支持通過(guò)組合(composition)與繼承(inheritance)

2、的方式定義類(lèi)(class)。python中沒(méi)有拜訪解釋符(accessspecifier,類(lèi)似c+中的public和private),這么設(shè)計(jì)的依據(jù)是大家都是成年人了。在python語(yǔ)言中,函數(shù)是第一類(lèi)對(duì)象(first-classobjects)。這指的是它們可以被指定給變量,函數(shù)既能返回函數(shù)類(lèi)型,也可以接受函數(shù)作為輸入。類(lèi)(class)也是第一類(lèi)對(duì)象。python代碼編寫(xiě)快,但是運(yùn)行速度比編譯語(yǔ)言通常要慢。好在python允許加入基于c語(yǔ)言編寫(xiě)的擴(kuò)展,因此我們能夠優(yōu)化代碼,消退瓶頸,這點(diǎn)通常是可以實(shí)現(xiàn)的。numpy就是一個(gè)很好地例子,它的運(yùn)行速度真的十分快,由于無(wú)數(shù)算術(shù)運(yùn)算其實(shí)并不是通過(guò)py

3、thon實(shí)現(xiàn)的。python用途十分廣泛——網(wǎng)絡(luò)應(yīng)用,自動(dòng)化,科學(xué)建模,大數(shù)據(jù)應(yīng)用,等等。它也常被用作膠水語(yǔ)言,協(xié)助其他語(yǔ)言和組件充實(shí)運(yùn)行情況。python讓困難的事情變得簡(jiǎn)單,因此程序員可以專(zhuān)注于算法和數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì),而不用處理底層的詳情。為什么提這個(gè)問(wèn)題:假如你應(yīng)聘的是一個(gè)python開(kāi)發(fā)崗位,你就應(yīng)當(dāng)知道這是門(mén)什么樣的語(yǔ)言,以及它為什么這么酷。以及它哪里不好。前每日優(yōu)鮮python全棧開(kāi)發(fā)工程師開(kāi)頭輔導(dǎo)python啦問(wèn)題2補(bǔ)充缺失的代碼defprint_directory_contents(spath):"""這個(gè)函數(shù)接受文件夾的名稱

4、作為輸入?yún)?shù),返回該文件夾中文件的路徑,以及其包含文件夾中文件的路徑。"""補(bǔ)充代碼答案defprint_directory_contents(spath):importosforschildinos.listdir(spath):schildpath=os.path.join(spath,schild)ifos.path.isdir(schildpath):print_directory_contents(schildpath)else:printschildpath特殊要注重以下幾點(diǎn):命名規(guī)范要統(tǒng)一。假如樣本代碼中能夠看出命名規(guī)范,遵循其已有的規(guī)范。遞歸函數(shù)需

5、要遞歸并終止。確保你明了其中的原理,否則你將瀕臨無(wú)休無(wú)止的調(diào)用棧(callstack)。我們用法os模塊與操作系統(tǒng)舉行交互,同時(shí)做到交互方式是可以跨平臺(tái)的。你可以把代碼寫(xiě)成schildpath=spath+&39;/&39;+schild,但是這個(gè)在windows系統(tǒng)上會(huì)出錯(cuò)。認(rèn)識(shí)基礎(chǔ)模塊是十分有價(jià)值的,但是別想破腦袋都背下來(lái),記住google是你工作中的良師益友。假如你不明了代碼的預(yù)期功能,就大膽提問(wèn)。堅(jiān)持kiss原則!保持容易,不過(guò)腦子就能懂!為什么提這個(gè)問(wèn)題:解釋面試者對(duì)與操作系統(tǒng)交互的基礎(chǔ)學(xué)問(wèn)遞歸真是太好用啦問(wèn)題3閱讀下面的代碼,寫(xiě)出a0,a1至an的終于值。a0=dict(zip(&

6、39;a&39;,&39;b&39;,&39;c&39;,&39;d&39;,&39;e&39;),(1,2,3,4,5)a1=range(10)a2=iforiina1ifiina0a3=a0sforsina0a4=iforiina1ifiina3a5=i:i*iforiina1a6=i,i*iforiina1答案a0=&39;a&39;:1,&39;c&39;:3,&39;b&39;:2,&39;e&39;:5,&39;d&39;:4a1=0,1,2,3,4,5,6,7,8,9a2=a3=1,3,2,5,4a4=1,2,3,4,5a5=0:0,1:1,2:4,3:9,4:16,5:25,6

7、:36,7:49,8:64,9:81a6=0,0,1,1,2,4,3,9,4,16,5,25,6,36,7,49,8,64,9,81為什么提這個(gè)問(wèn)題:列表解析(listcomprehension)非常節(jié)省時(shí)光,對(duì)無(wú)數(shù)人來(lái)說(shuō)也是一個(gè)大的學(xué)習(xí)障礙。假如你讀懂了這些代碼,就很可能可以寫(xiě)下正確地值。其中部分代碼有意寫(xiě)的怪怪的。由于你共事的人之中也會(huì)有怪人。問(wèn)題4python和多線程(multi-threading)。這是個(gè)好想法碼?列舉一些讓python代碼以并行方式運(yùn)行的辦法。答案python并不支持真正意義上的多線程。python中提供了多線程包,但是假如你想通過(guò)多線程提高代碼的速度,用法多線程包

8、并不是個(gè)好想法。python中有一個(gè)被稱為globalinterpreterlock(gil)的東西,它會(huì)確保任何時(shí)候你的多個(gè)線程中,惟獨(dú)一個(gè)被執(zhí)行。線程的執(zhí)行速度十分之快,會(huì)讓你誤以為線程是并行執(zhí)行的,但是事實(shí)上都是輪番執(zhí)行。經(jīng)過(guò)gil這一道關(guān)卡處理,會(huì)增強(qiáng)執(zhí)行的開(kāi)銷(xiāo)。這意味著,假如你想提高代碼的運(yùn)行速度,用法threading包并不是一個(gè)很好的辦法。不過(guò)還是有無(wú)數(shù)理由促使我們用法threading包的。假如你想同時(shí)執(zhí)行一些任務(wù),而且不考慮效率問(wèn)題,那么用法這個(gè)包是徹低沒(méi)問(wèn)題的,而且也很便利。但是大部分狀況下,并不是這么一回事,你會(huì)希翼把多線程的部格外包給操作系統(tǒng)完成(通過(guò)開(kāi)啟多個(gè)進(jìn)程),或

9、者是某些調(diào)用你的python代碼的外部程序(例如spark或hadoop),又或者是你的python代碼調(diào)用的其他代碼(例如,你可以在python中調(diào)用c函數(shù),用于處理開(kāi)銷(xiāo)較大的多線程工作)。為什么提這個(gè)問(wèn)題由于gil就是個(gè)混賬東西(a-hole)。無(wú)數(shù)人花費(fèi)大量的時(shí)光,試圖尋覓自己多線程代碼中的瓶頸,直到他們明了gil的存在。問(wèn)題5你如何管理不同版本的代碼?答案:版本管理!被問(wèn)到這個(gè)問(wèn)題的時(shí)候,你應(yīng)當(dāng)要表現(xiàn)得很高興,甚至告知他們你是如何用法git(或是其他你最喜愛(ài)的工具)追蹤自己和奶奶的書(shū)信往來(lái)。我偏向于用法git作為版本控制系統(tǒng)(vcs),但還有其他的挑選,比如subversion(svn

10、)。為什么提這個(gè)問(wèn)題:由于沒(méi)有版本控制的代碼,就像沒(méi)有杯子的咖啡。有時(shí)候我們需要寫(xiě)一些一次性的、可以順手扔掉的腳本,這種狀況下不作版本控制不要緊。但是假如你面向的是大量的代碼,用法版本控制系統(tǒng)是有利的。版本控制能夠幫你追蹤誰(shuí)對(duì)代碼庫(kù)做了什么操作;發(fā)覺(jué)新引入了什么bug;管理你的軟件的不同版本和發(fā)行版;在團(tuán)隊(duì)成員中共享源代碼;部署及其他自動(dòng)化處理。它能讓你回滾到浮現(xiàn)問(wèn)題之前的版本,單憑這點(diǎn)就特殊棒了。還有其他的好功能。怎么一個(gè)棒字了得!問(wèn)題6下面代碼會(huì)輸出什么:deff(x,l=):foriinrange(x):l.append(i*i)printlf(2)f(3,3,2,1)f(3)答案:0,

11、13,2,1,0,1,40,1,0,1,4呃?第一個(gè)函數(shù)調(diào)用非常顯然,for循環(huán)先后將0和1添加至了空列表l中。l是變量的名字,指向內(nèi)存中存儲(chǔ)的一個(gè)列表。其次個(gè)函數(shù)調(diào)用在一塊新的內(nèi)存中創(chuàng)建了新的列表。l這時(shí)指向了新生成的列表。之后再往新列表中添加0、1、2和4。很棒吧。第三個(gè)函數(shù)調(diào)用的結(jié)果就有些驚奇了。它用法了之前內(nèi)存地址中存儲(chǔ)的舊列表。這就是為什么它的前兩個(gè)元素是0和1了。不明了的話就試著運(yùn)行下面的代碼吧:l_mem=l=l_memthefirstcallforiinrange(2):l.append(i*i)printl0,1l=3,2,1thesecondcallforiinrange(

12、3):l.append(i*i)printl3,2,1,0,1,4l=l_memthethirdcallforiinrange(3):l.append(i*i)printl0,1,0,1,4問(wèn)題7猴子補(bǔ)丁(monkeypatching)指的是什么?這種做法好嗎?答案:猴子補(bǔ)丁就是指,在函數(shù)或?qū)ο笠呀?jīng)定義之后,再去轉(zhuǎn)變它們的行為。舉個(gè)例子:importdatetimedatetime.datetime.now=lambda:datetime.datetime(2012,12,12)大部分狀況下,這是種很不好的做法-由于函數(shù)在代碼庫(kù)中的行為最好是都保持全都。打猴子補(bǔ)丁的緣由可能是為了測(cè)試。mock

13、包對(duì)實(shí)現(xiàn)這個(gè)目的很有協(xié)助。為什么提這個(gè)問(wèn)題?答對(duì)這個(gè)問(wèn)題解釋你對(duì)單元測(cè)試的辦法有一定了解。你假如提到要避開(kāi)猴子補(bǔ)丁,可以解釋你不是那種喜愛(ài)花里胡哨代碼的程序員(公司里就有這種人,跟他們共事真是糟糕透了),而是更注意可維護(hù)性。還記得kiss原則碼?答對(duì)這個(gè)問(wèn)題還解釋你明了一些python底層運(yùn)作的方式,函數(shù)實(shí)際是如何存儲(chǔ)、調(diào)用等等。另外:假如你沒(méi)讀過(guò)mock模塊的話,真的值得花時(shí)光讀一讀。這個(gè)模塊十分實(shí)用。問(wèn)題8這兩個(gè)參數(shù)是什么意思:*args,*kwargs?我們?yōu)槭裁匆梅ㄋ鼈??答案假如我們不確定要往函數(shù)中傳入多少個(gè)參數(shù),或者我們想往函數(shù)中以列表和元組的形式傳參數(shù)時(shí),那就使要用*args;假

14、如我們不知道要往函數(shù)中傳入多少個(gè)關(guān)鍵詞參數(shù),或者想傳入字典的值作為關(guān)鍵詞參數(shù)時(shí),那就要用法*kwargs。args和kwargs這兩個(gè)標(biāo)識(shí)符是商定俗成的使用,你固然還可以用*bob和*billy,但是這樣就并不太妥。下面是詳細(xì)的示例:deff(*args,*kwargs):printargs,kwargsl=1,2,3t=(4,5,6)d=&39;a&39;:7,&39;b&39;:8,&39;c&39;:9f()f(1,2,3)(1,2,3)f(1,2,3,"groovy")(1,2,3,&39;groovy&39;)f(a=1,b=2,c=3)()&39;a&39;:1

15、,&39;c&39;:3,&39;b&39;:2f(a=1,b=2,c=3,zzz="hi")()&39;a&39;:1,&39;c&39;:3,&39;b&39;:2,&39;zzz&39;:&39;hi&39;f(1,2,3,a=1,b=2,c=3)(1,2,3)&39;a&39;:1,&39;c&39;:3,&39;b&39;:2f(*l,*d)(1,2,3)&39;a&39;:7,&39;c&39;:9,&39;b&39;:8f(*t,*d)(4,5,6)&39;a&39;:7,&39;c&39;:9,&39;b&39;:8f(1,2,*t)(1,2,4,5,6)f

16、(q="winning",*d)()&39;a&39;:7,&39;q&39;:&39;winning&39;,&39;c&39;:9,&39;b&39;:8f(1,2,*t,q="winning",*d)(1,2,4,5,6)&39;a&39;:7,&39;q&39;:&39;winning&39;,&39;c&39;:9,&39;b&39;:8deff2(arg1,arg2,*args,*kwargs):printarg1,arg2,args,kwargsf2(1,2,3)12(3,)f2(1,2,3,"groovy")12(3,

17、&39;groovy&39;)f2(arg1=1,arg2=2,c=3)12()&39;c&39;:3f2(arg1=1,arg2=2,c=3,zzz="hi")12()&39;c&39;:3,&39;zzz&39;:&39;hi&39;f2(1,2,3,a=1,b=2,c=3)12(3,)&39;a&39;:1,&39;c&39;:3,&39;b&39;:2f2(*l,*d)12(3,)&39;a&39;:7,&39;c&39;:9,&39;b&39;:8f2(*t,*d)45(6,)&39;a&39;:7,&39;c&39;:9,&39;b&39;:8f2(1,2,*t

18、)12(4,5,6)f2(1,1,q="winning",*d)11()&39;a&39;:7,&39;q&39;:&39;winning&39;,&39;c&39;:9,&39;b&39;:8f2(1,2,*t,q="winning",*d)12(4,5,6)&39;a&39;:7,&39;q&39;:&39;winning&39;,&39;c&39;:9,&39;b&39;:8為什么提這個(gè)問(wèn)題?有時(shí)候,我們需要往函數(shù)中傳入未知個(gè)數(shù)的參數(shù)或關(guān)鍵詞參數(shù)。有時(shí)候,我們也希翼把參數(shù)或關(guān)鍵詞參數(shù)儲(chǔ)存起來(lái),以備以后用法。有時(shí)候,僅僅是為了節(jié)約時(shí)光。問(wèn)題9下面這些

19、是什么意思:classmethod,staticmethod,property?回答背景學(xué)問(wèn)這些都是裝點(diǎn)器(decorator)。裝點(diǎn)器是一種特別的函數(shù),要么接受函數(shù)作為輸入?yún)?shù),并返回一個(gè)函數(shù),要么接受一個(gè)類(lèi)作為輸入?yún)?shù),并返回一個(gè)類(lèi)。標(biāo)志是語(yǔ)法糖(syntacticsugar),可以讓你以容易易讀得方式裝點(diǎn)目標(biāo)對(duì)象。my_decoratordefmy_func(stuff):do_thingsisequivalenttodefmy_func(stuff):do_thingsmy_func=my_decorator(my_func)你可以在本網(wǎng)站上找到介紹裝點(diǎn)器工作原理的教材。真正的答案cl

20、assmethod,staticmethod和property這三個(gè)裝點(diǎn)器的用法對(duì)象是在類(lèi)中定義的函數(shù)。下面的例子展示了它們的使用和行為:classmyclass(object):def_init_(self):self._some_property="propertiesarenice"self._some_other_property="verynice"defnormal_method(*args,*kwargs):print"callingnormal_method(0,1)".format(args,kwargs)class

21、methoddefclass_method(*args,*kwargs):print"callingclass_method(0,1)".format(args,kwargs)staticmethoddefstatic_method(*args,*kwargs):print"callingstatic_method(0,1)".format(args,kwargs)propertydefsome_property(self,*args,*kwargs):print"callingsome_propertygetter(0,1,2)".

22、format(self,args,kwargs)returnself._some_propertysome_property.setterdefsome_property(self,*args,*kwargs):print"callingsome_propertysetter(0,1,2)".format(self,args,kwargs)self._some_property=args0propertydefsome_other_property(self,*args,*kwargs):print"callingsome_other_propertygetter

23、(0,1,2)".format(self,args,kwargs)returnself._some_other_propertyo=myclass()未裝點(diǎn)的辦法還是正常的行為方式,需要當(dāng)前的類(lèi)實(shí)例(self)作為第一個(gè)參數(shù)。o.normal_methodo.normal_method()normal_method(,),)o.normal_method(1,2,x=3,y=4)normal_method(,1,2),&39;y&39;:4,&39;x&39;:3)類(lèi)辦法的第一個(gè)參數(shù)永久是該類(lèi)o.class_methodo.class_method()class_method(,),

24、)o.class_method(1,2,x=3,y=4)class_method(,1,2),&39;y&39;:4,&39;x&39;:3)靜態(tài)辦法(staticmethod)中除了你調(diào)用時(shí)傳入的參數(shù)以外,沒(méi)有其他的參數(shù)。o.static_methodo.static_method()static_method(),)o.static_method(1,2,x=3,y=4)static_method(1,2),&39;y&39;:4,&39;x&39;:3)property是實(shí)現(xiàn)getter和setter辦法的一種方式。挺直調(diào)用它們是錯(cuò)誤的。只讀屬性可以通過(guò)只定義getter辦法,不定義se

25、tter辦法實(shí)現(xiàn)。o.some_property調(diào)用some_property的getter(,(),)&39;propertiesarenice&39;屬性是很好的功能o.some_property()callingsome_propertygetter(,(),)traceback(mostrecentcalllast):file"",line1,intypeerror:&39;str&39;objectisnotcallableo.some_other_propertycallingsome_other_propertygetter(,(),)&39;verynice

26、&39;o.some_other_property()callingsome_other_propertygetter(,(),)traceback(mostrecentcalllast):file"",line1,intypeerror:&39;str&39;objectisnotcallableo.some_property="groovy"callingsome_propertysetter(,(&39;groovy&39;,),)o.some_propertycallingsome_propertygetter(,(),)&39;groovy&3

27、9;o.some_other_property="verygroovy"traceback(mostrecentcalllast):file"",line1,inattributeerror:can&39;tsetattributeo.some_other_propertycallingsome_other_propertygetter(,(),)問(wèn)題10閱讀下面的代碼,它的輸出結(jié)果是什么?classa(object):defgo(self):print"goago!"defstop(self):print"stopasto

28、p!"defpause(self):raiseexception("notimplemented")classb(a):defgo(self):super(b,self).go()print"gobgo!"classc(a):defgo(self):super(c,self).go()print"gocgo!"defstop(self):super(c,self).stop()print"stopcstop!"classd(b,c):defgo(self):super(d,self).go()print&

29、quot;godgo!"defstop(self):super(d,self).stop()print"stopdstop!"defpause(self):print"waitdwait!"classe(b,c):passa=a()b=b()c=c()d=d()e=e()解釋下列代碼的輸出結(jié)果a.go()b.go()c.go()d.go()e.go()a.stop()b.stop()c.stop()d.stop()e.stop()a.pause()b.pause()c.pause()d.pause()e.pause()答案輸出結(jié)果以注釋的形式表

30、示:a.go()goago!b.go()goago!gobgo!c.go()goago!gocgo!d.go()goago!gocgo!gobgo!godgo!e.go()goago!gocgo!gobgo!a.stop()stopastop!b.stop()stopastop!c.stop()stopastop!stopcstop!d.stop()stopastop!stopcstop!stopdstop!e.stop()stopastop!a.pause().exception:notimplementedb.pause().exception:notimplementedc.pause(

31、).exception:notimplementedd.pause()waitdwait!e.pause().exception:notimplemented為什么提這個(gè)問(wèn)題?由于面對(duì)對(duì)象的編程真的真的很重要。不騙你。答對(duì)這道問(wèn)題解釋你理解了繼承和python中super函數(shù)的使用。問(wèn)題11閱讀下面的代碼,它的輸出結(jié)果是什么?classnode(object):def_init_(self,sname):self._lchildren=self.sname=snamedef_repr_(self):return"".format(self.sname)defappend(s

32、elf,*args,*kwargs):self._lchildren.append(*args,*kwargs)defprint_all_1(self):printselfforochildinself._lchildren:ochild.print_all_1()defprint_all_2(self):defgen(o):lall=o,whilelall:onext=lall.pop(0)lall.extend(onext._lchildren)yieldonextforonodeingen(self):printonodeoroot=node("root")ochil

33、d1=node("child1")ochild2=node("child2")ochild3=node("child3")ochild4=node("child4")ochild5=node("child5")ochild6=node("child6")ochild7=node("child7")ochild8=node("child8")ochild9=node("child9")ochild10=node(&qu

34、ot;child10")oroot.append(ochild1)oroot.append(ochild2)oroot.append(ochild3)ochild1.append(ochild4)ochild1.append(ochild5)ochild2.append(ochild6)ochild4.append(ochild7)ochild3.append(ochild8)ochild3.append(ochild9)ochild6.append(ochild10)解釋下面代碼的輸出結(jié)果oroot.print_all_1()oroot.print_all_2()答案oroot.p

35、rint_all_1()會(huì)打印下面的結(jié)果:oroot.print_all_1()會(huì)打印下面的結(jié)果:為什么提這個(gè)問(wèn)題?由于對(duì)象的精髓就在于組合(composition)與對(duì)象構(gòu)造(objectconstruction)。對(duì)象需要有組合成分構(gòu)成,而且得以某種方式初始化。這里也涉及到遞歸和生成器(generator)的用法。生成器是很棒的數(shù)據(jù)類(lèi)型。你可以只通過(guò)構(gòu)造一個(gè)很長(zhǎng)的列表,然后打印列表的內(nèi)容,就可以取得與print_all_2類(lèi)似的功能。生成器還有一個(gè)益處,就是不用占領(lǐng)無(wú)數(shù)內(nèi)存。有一點(diǎn)還值得指出,就是print_all_1會(huì)以深度優(yōu)先(depth-first)的方式遍歷樹(shù)(tree),而pri

36、nt_all_2則是寬度優(yōu)先(width-first)。有時(shí)候,一種遍歷方式比另一種更合適。但這要看你的應(yīng)用的詳細(xì)狀況。問(wèn)題12簡(jiǎn)要描述python的垃圾回收機(jī)制(garbagecollection)。答案這里能說(shuō)的無(wú)數(shù)。你應(yīng)當(dāng)提到下面幾個(gè)主要的點(diǎn):python在內(nèi)存中存儲(chǔ)了每個(gè)對(duì)象的引用計(jì)數(shù)(referencecount)。假如計(jì)數(shù)值變成0,那么相應(yīng)的對(duì)象就會(huì)小時(shí),分配給該對(duì)象的內(nèi)存就會(huì)釋放出來(lái)用作他用。間或也會(huì)浮現(xiàn)引用循環(huán)(referencecycle)。垃圾回收器會(huì)定時(shí)尋覓這個(gè)循環(huán),并將其回收。舉個(gè)例子,假設(shè)有兩個(gè)對(duì)象o1和o2,而且符合o1.x=o2和o2.x=o1這兩個(gè)條件。假如o1

37、和o2沒(méi)有其他代碼引用,那么它們就不應(yīng)當(dāng)繼續(xù)存在。但它們的引用計(jì)數(shù)都是1。python中用法了某些啟發(fā)式算法(heuristics)來(lái)加速垃圾回收。例如,越晚創(chuàng)建的對(duì)象更有可能被回收。對(duì)象被創(chuàng)建之后,垃圾回收器會(huì)分配它們所屬的代(generation)。每個(gè)對(duì)象都會(huì)被分配一個(gè)代,而被分配更衰老代的對(duì)象是優(yōu)先被處理的。問(wèn)題13將下面的函數(shù)根據(jù)執(zhí)行效率凹凸排序。它們都接受由0至1之間的數(shù)字構(gòu)成的列表作為輸入。這個(gè)列表可以很長(zhǎng)。一個(gè)輸入列表的示例如下:random.random()foriinrange(100000)。你如何證實(shí)自己的答案是正確的。deff1(lin):l1=sorted(lin)l2=iforiinl1ificprofile.run(&39;f1(lin)&39;)4functioncallsin0.045secondsorderedby:standardnamencallstottimepercallcumtimepercallfilename:lineno(function)10.0090.0090.0440.044:1(f1)10.0010.0010.0450.045:1()10.0000.0000.0000

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論