freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

python面試題100(編輯修改稿)

2025-04-23 23:41 本頁面
 

【文章內(nèi)容簡介】 因?yàn)闆]有版本控制的代碼,就像沒有杯子的咖啡。有時候我們需要寫一些一次性的、可以隨手扔掉的腳本,這種情況下不作版本控制沒關(guān)系。但是如果你面對的是大量的代碼,使用版本控制系統(tǒng)是有利的。版本控制能夠幫你追蹤誰對代碼庫做了什么操作;發(fā)現(xiàn)新引入了什么bug;管理你的軟件的不同版本和發(fā)行版;在團(tuán)隊(duì)成員中分享源代碼;部署及其他自動化處理。它能讓你回滾到出現(xiàn)問題之前的版本,單憑這點(diǎn)就特別棒了。還有其他的好功能。怎么一個棒字了得!34“猴子補(bǔ)丁”(monkey patching)指的是什么?這種做法好嗎?答案:“猴子補(bǔ)丁”就是指,在函數(shù)或?qū)ο笠呀?jīng)定義之后,再去改變它們的行為。舉個例子:import datetime = lambda: (2012, 12, 12)大部分情況下,這是種很不好的做法 因?yàn)楹瘮?shù)在代碼庫中的行為最好是都保持一致。打“猴子補(bǔ)丁”的原因可能是為了測試。mock包對實(shí)現(xiàn)這個目的很有幫助。為什么提這個問題?答對這個問題說明你對單元測試的方法有一定了解。你如果提到要避免“猴子補(bǔ)丁”,可以說明你不是那種喜歡花里胡哨代碼的程序員(公司里就有這種人,跟他們共事真是糟糕透了),而是更注重可維護(hù)性。還記得KISS原則碼?答對這個問題還說明你明白一些Python底層運(yùn)作的方式,函數(shù)實(shí)際是如何存儲、調(diào)用等等。另外:如果你沒讀過mock模塊的話,真的值得花時間讀一讀。這個模塊非常有用。35閱讀下面的代碼,它的輸出結(jié)果是什么?class A(object): def go(self): print go A go! def stop(self): print stop A stop! def pause(self): raise Exception(Not Implemented)class B(A): def go(self): super(B, self).go() print go B go!class C(A): def go(self): super(C, self).go() print go C go! def stop(self): super(C, self).stop() print stop C stop!class D(B,C): def go(self): super(D, self).go() print go D go! def stop(self): super(D, self).stop() print stop D stop! def pause(self): print wait D wait!class E(B,C): passa = A()b = B()c = C()d = D()e = E() 說明下列代碼的輸出結(jié)果()()()()()()()()()()()()()()()答案輸出結(jié)果以注釋的形式表示:() go A go!() go A go! go B go!() go A go! go C go!() go A go! go C go! go B go! go D go!() go A go! go C go! go B go!() stop A stop!() stop A stop!() stop A stop! stop C stop!() stop A stop! stop C stop! stop D stop!() stop A stop!() ... Exception: Not Implemented() ... Exception: Not Implemented() ... Exception: Not Implemented() wait D wait!() ...Exception: Not Implemented為什么提這個問題?因?yàn)槊嫦驅(qū)ο蟮木幊陶娴恼娴暮苤匾?。不騙你。答對這道問題說明你理解了繼承和Python中super函數(shù)的用法。36閱讀下面的代碼,它的輸出結(jié)果是什么?class Node(object): def __init__(self,sName): = [] = sName def __repr__(self): return Node 39。{}39。.format() def append(self,*args,**kwargs): (*args,**kwargs) def print_all_1(self): print self for oChild in : () def print_all_2(self): def gen(o): lAll = [o,] while lAll: oNext = (0) () yield oNext for oNode in gen(self): print oNodeoRoot = Node(root)oChild1 = 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(child10)(oChild1)(oChild2)(oChild3)(oChild4)(oChild5)(oChild6)(oChild7)(oChild8)(oChild9)(oChild10) 說明下面代碼的輸出結(jié)果()()答案()會打印下面的結(jié)果:Node 39。root39。Node 39。child139。Node 39。child439。Node 39。child739。Node 39。child539。Node 39。child239。Node 39。child639。Node 39。child1039。Node 39。child339。Node 39。child839。Node 39。child939。()會打印下面的結(jié)果:Node 39。root39。Node 39。child139。Node 39。child239。Node 39。child339。Node 39。child439。Node 39。child539。Node 39。child639。Node 39。child839。Node 39。child939。Node 39。child739。Node 39。child1039。為什么提這個問題?因?yàn)閷ο蟮木杈驮谟诮M合(position)與對象構(gòu)造(object construction)。對象需要有組合成分構(gòu)成,而且得以某種方式初始化。這里也涉及到遞歸和生成器(generator)的使用。生成器是很棒的數(shù)據(jù)類型。你可以只通過構(gòu)造一個很長的列表,然后打印列表的內(nèi)容,就可以取得與print_all_2類似的功能。生成器還有一個好處,就是不用占據(jù)很多內(nèi)存。有一點(diǎn)還值得指出,就是print_all_1會以深度優(yōu)先(depthfirst)的方式遍歷樹(tree),而print_all_2則是寬度優(yōu)先(widthfirst)。有時候,一種遍歷方式比另一種更合適。但這要看你的應(yīng)用的具體情況。?答:try…except…except…[else…][finally…]執(zhí)行try下的語句,如果引發(fā)異常,則執(zhí)行過程會跳到except語句。對每個except分支順序嘗試執(zhí)行,如果引發(fā)的異常與except中的異常組匹配,執(zhí)行相應(yīng)的語句。如果所有的except都不匹配,則異常會傳遞到下一個調(diào)用本代碼的最高層try代碼中。try下的語句正常執(zhí)行,則執(zhí)行else塊代碼。如果發(fā)生異常,就不會執(zhí)行如果存在finally語句,最后總是會執(zhí)行。?答:pass語句不會執(zhí)行任何操作,一般作為占位符或者創(chuàng)建占位程序,whileFalse:pass()函數(shù)的用法?答:列出一組數(shù)據(jù),經(jīng)常用在for in range()循環(huán)中?答:可以使用re模塊中的sub()函數(shù)或者subn()函數(shù)來進(jìn)行查詢和替換,格式:sub(replacement, string[,count=0])(replacement是被替換成的文本,string是需要被替換的文本,count是一個可選參數(shù),指最大被替換的數(shù)量) import rep=(‘blue|white|red’)print((‘colour’,39。blue socks and red shoes’))colour socks and colourshoesprint((‘colour’,39。blue socks and red shoes’,count=1))colour socks and redshoessubn()方法執(zhí)行的效果跟sub()一樣,不過它會返回一個二維數(shù)組,包括替換后的新的字符串和總共替換的數(shù)量()和search()的區(qū)別?答:re模塊中match(pattern,string[,flags]),檢查string的開頭是否與pattern匹配。re模塊中research(pattern,string[,flags]),在string搜索pattern的第一個匹配值。print((‘super’, ‘superstition’).span())(0, 5)print((‘super’, ‘insuperable’))Noneprint((‘super’, ‘superstition’).span())(0, 5)print((‘super’, ‘insuperable’).span())(2, 7) tag的時候,.*和.*?有什么區(qū)別?答:術(shù)語叫貪婪匹配( .* )和非貪婪匹配(.*? )例如:test.* :test.*? :?答:random模塊隨機(jī)整數(shù):(a,b):返回隨機(jī)整數(shù)x,a=x=b(start,stop,[,step]):返回一個范圍在(start,stop,step)之間的隨機(jī)整數(shù),不包括結(jié)束值。隨機(jī)實(shí)數(shù):( ):返回0到1之間的浮點(diǎn)數(shù)(a,b):返回指定范圍內(nèi)的浮點(diǎn)數(shù)。?答:PyChecker是一個python代碼的靜態(tài)分析工具,它可以幫助查找python代碼的bug, 會對代碼的復(fù)雜度和格式提出警告Pylint是另外一個工具可以進(jìn)行codingstandard檢查?答:解決方法是在function的開始插入一個global聲明:def f()global x,雙引號,三引號的區(qū)別答:單引號和雙引號是等效的,如果要換行,需要符號(\),三引號則可以直接換行,并且可以包含注釋如果要表示Let’s go 這個字符串單引號:s4 = ‘Let\’s go’雙引號:s5 = “Let’s go”s6 = ‘I realy like“python”!’這就是單引號和雙引號都可以表示字符串的原因了46 Python和多線程(multithreading)。這是個好主意碼?列舉一些讓Python代碼以并行方式運(yùn)行的方法。答案Python并不支持真正意義上的多線程。Python中提供了多線程包,但是如果你想通過多線程提高代碼的速度,使用多線程包并不是個好主意。Python中有一個被稱為Global Interpreter Lock(GIL)的東西,它會確保任何時候你的多個線程中,只有一個被執(zhí)行。線程的執(zhí)行速度非常之快,會讓你誤以為線程是并行執(zhí)行的,但是實(shí)際上都是輪流執(zhí)行。經(jīng)過GIL這一道關(guān)卡處理,會增加執(zhí)行的開銷。這意味著,如果你想提高代碼的運(yùn)行速度,使用threading包并不是一個很好的方法。不過還是有很多理由促使我們使用threading包的。如果你想同時執(zhí)行一些任務(wù),而且不考慮效率問題,那么使用這個包是完全沒問題的,而且也很方便。但是大部分情況下,并不是這么一回事,你會希望把多線程的部分外包給操作系統(tǒng)完成(通過開啟多個進(jìn)程),或者是某些調(diào)用你的Python代碼的外部程序(例如Spark或Hadoop),又或者是你的Python代碼調(diào)用的其他代碼(例如,你可以在Python中調(diào)用C函數(shù),用于處理開銷較大的多線程工作)。為什么提這個問題因?yàn)镚IL就是個混賬東西(Ahole)。很多人花費(fèi)大量的時間,試圖尋找自己多線程代碼中的瓶頸,直到他們明白GIL的存在。47 將下面的函數(shù)按照執(zhí)行效率高低排序。它們都接受由0至1之間的數(shù)字構(gòu)成的列表作為輸入。這個列表可以很長。一個輸入列表的示例如下:[() for i in range(100000)]。你如何證明自己的答案是正確的。def f1(lIn): l1 = sorted(lIn) l2 = [i for i in l1 if i] return [i*i for i in l2]def f2(lIn): l1 = [i for i in lIn if i] l2 = sorted(l1) return [i*i for i in l2]def f3(lIn): l1 = [i*i for i in lIn] l2 = sorted(l1) return [i for i in l1 if i(*)]答案按執(zhí)行效率從高到低排列:ff1和f3。要證明這個答案是對的,你應(yīng)該知道如何分析自己代碼的性能。Python中有一個很好的程序分析包,可以滿足這個需求。import cProfilelIn = [() for
點(diǎn)擊復(fù)制文檔內(nèi)容
電大資料相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1