python筆記題帶答案_第1頁
python筆記題帶答案_第2頁
python筆記題帶答案_第3頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、.1.Python 是如何進行內(nèi)存管理的?答 :從三個方面來說 ,一對象的引用計數(shù)機制 ,二垃圾回收機制 ,三內(nèi)存池機制一、對象的引用計數(shù)機制Python 內(nèi)部使用引用計數(shù), 來保持追蹤內(nèi)存中的對象, 所有對象都有引用計數(shù)。引用計數(shù)增加的情況:1,一個對象分配一個新名稱2,將其放入一個容器中(如列表、元組或字典)引用計數(shù)減少的情況:1,使用 del 語句對對象別名顯示的銷毀2,引用超出作用域或被重新賦值sys.getrefcount()函數(shù)可以獲得對象的當前引用計數(shù)多數(shù)情況下,引用計數(shù)比你猜測得要大得多。 對于不可變數(shù)據(jù)(如數(shù)字和字符串),解釋器會在程序的不同部分共享內(nèi)存,以便節(jié)約內(nèi)存。二、垃

2、圾回收1,當一個對象的引用計數(shù)歸零時,它將被垃圾收集機制處理掉。2,當兩個對象 a 和 b 相互引用時, del 語句可以減少 a 和 b 的引用計數(shù),并銷毀用于引用底層對象的名稱。然而由于每個對象都包含一個對其他對象的應用,因此引用計數(shù)不會歸零,對象也不會銷毀。 (從而導致內(nèi)存泄露)。為解決這一問題,解釋器會定期執(zhí)行一個循環(huán)檢測器, 搜索不可訪問對象的循環(huán)并刪除它們。三、內(nèi)存池機制Python 提供了對內(nèi)存的垃圾收集機制,但是它將不用的內(nèi)存放到內(nèi)存池而不是返回給操作系統(tǒng)。1,Pymalloc 機制。為了加速 Python 的執(zhí)行效率, Python 引入了一個內(nèi)存池機制,用于管理對小塊內(nèi)存的

3、申請和釋放。1/10.2,Python 中所有小于 256 個字節(jié)的對象都使用 pymalloc 實現(xiàn)的分配器,而大的對象則使用系統(tǒng)的 malloc 。3,對于 Python 對象,如整數(shù),浮點數(shù)和 List ,都有其獨立的私有內(nèi)存池,對象間不共享他們的內(nèi)存池。 也就是說如果你分配又釋放了大量的整數(shù), 用于緩存這些整數(shù)的內(nèi)存就不能再分配給浮點數(shù)。2.什么是 lambda 函數(shù)?它有什么好處 ?答:lambda 表達式,通常是在需要一個函數(shù),但是又不想費神去命名一個函數(shù)的場合下使用,也就是指匿名函數(shù)lambda 函數(shù):首要用途是指點短小的回調函數(shù)lambdaarguments:expressio

4、na=lambdax,y:x+ya(3,11)3.Python 里面如何實現(xiàn) tuple 和 list 的轉換?答:直接使用 tuple 和 list 函數(shù)就行了, type() 可以判斷對象的類型4.請寫出一段 Python 代碼實現(xiàn)刪除一個list 里面的重復元素答:1,使用 set 函數(shù), set(list)2,使用字典函數(shù),a=1,2,4,2,4,5,6,5,7,8,9,0b=b=b.fromkeys(a)c=list(b.keys()c5.編程用 sort 進行排序,然后從最后一個元素開始判斷a=1,2,4,2,4,5,7,10,5,5,7,8,9,0,3a.sort()last=a

5、-12/10.for i inrange(len(a)-2,-1,-1):if last=ai:del aielse:last=aiprint(a)6.Python 里面如何拷貝一個對象?(賦值,淺拷貝,深拷貝的區(qū)別)答:賦值( =),就是創(chuàng)建了對象的一個新的引用,修改其中任意一個變量都會影響到另一個。淺拷貝:創(chuàng)建一個新的對象, 但它包含的是對原始對象中包含項的引用 (如果用引用的方式修改其中一個對象,另外一個也會修改改變) 1, 完全切片方法; 2,工廠函數(shù),如 list() ;3,copy 模塊的 copy() 函數(shù) 深拷貝:創(chuàng)建一個新的對象,并且遞歸的復制它所包含的對象(修改其中一個,另

6、外一個不會改變) copy 模塊的 deep.deepcopy() 函數(shù) 7.介紹一下 except 的用法和作用?答: try except except else finally執(zhí)行 try 下的語句,如果引發(fā)異常,則執(zhí)行過程會跳到 except 語句。對每個 ex cept 分支順序嘗試執(zhí)行,如果引發(fā)的異常與 except 中的異常組匹配,執(zhí)行相應的語句。如果所有的 except 都不匹配,則異常會傳遞到下一個調用本代碼的最高層 try 代碼中。try 下的語句正常執(zhí)行,則執(zhí)行else 塊代碼。如果發(fā)生異常,就不會執(zhí)行如果存在 finally 語句,最后總是會執(zhí)行。8.Python 中

7、pass 語句的作用是什么?答:pass 語句不會執(zhí)行任何操作,一般作為占位符或者創(chuàng)建占位程序,whileFalse:pass9.介紹一下 Python 下 range() 函數(shù)的用法?3/10.答:列出一組數(shù)據(jù),經(jīng)常用在for in range() 循環(huán)中10. 如何用 Python 來進行查詢和替換一個文本字符串?答:可以使用 re 模塊中的 sub() 函數(shù)或者 subn() 函數(shù)來進行查詢和替換,格式: sub(replacement, string,count=0) ( replacement 是被替換成的文本, s tring 是需要被替換的文本, count 是一個可選參數(shù),指最

8、大被替換的數(shù)量)importrep=pile( blue|white|red)print(p.sub( colour ,socksblueand red shoes )coloursocks and colourshoesprint(p.sub( colour ,socksblueand red shoes ,count=1)coloursocks and redshoessubn() 方法執(zhí)行的效果跟 sub() 一樣,不過它會返回一個二維數(shù)組,包括替換后的新的字符串和總共替換的數(shù)量11.Python 里面 match() 和 search() 的區(qū)別?答: re 模塊中 match(pat

9、tern,string,flags), 檢查 string 的開頭是否與 pattern 匹配。re 模塊中 research(pattern,string,flags),在 string 搜索 pattern 的第一個匹配值。print(re.match( supersuperstition, ).span()(0,5)print(re.match( superinsuperable, )Noneprint(re.search( super superstition, ).span()(0,5)print(re.search( super insuperable, ).span()(2,7)

10、12. 用 Python 匹配 HTML tag 的時候, <.>和<.?> 有什么區(qū)別?答:術語叫貪婪匹配 ( <.> )和非貪婪匹配 (<. ?> )4/10.例如 :test<.*> :test<.*?> :13.Python 里面如何生成隨機數(shù)?答: random 模塊隨機整數(shù): random.randint(a,b) :返回隨機整數(shù)x,a<=x<=brandom.randrange(start,stop,step) :返回一個范圍在 (start,stop,step) 之間的隨機整數(shù),不包括結束值。隨

11、機實數(shù): random.random():返回 0 到 1 之間的浮點數(shù)random.uniform(a,b): 返回指定范圍內(nèi)的浮點數(shù)。14. 有沒有一個工具可以幫助查找 python 的 bug 和進行靜態(tài)的代碼分析?答: PyChecker 是一個 python 代碼的靜態(tài)分析工具,它可以幫助查找 python 代碼的 bug, 會對代碼的復雜度和格式提出警告Pylint 是另外一個工具可以進行codingstandard 檢查15. 如何在一個 function 里面設置一個全局的變量?答:解決方法是在 function 的開始插入一個 global 聲明:def f()global

12、x16. 單引號,雙引號,三引號的區(qū)別答:單引號和雙引號是等效的, 如果要換行,需要符號 (),三引號則可以直接換行,并且可以包含注釋5/10.如果要表示 Let sgo 這個字符串單引號: s4 = Letsgo雙引號: s5 = “Let gos”s6 = realyI like “ python ” ! 這就是單引號和雙引號都可以表示字符串的原因了2.49判斷對錯:已知x = 3 ,那么賦值語句x = 'abcedfg'是無法正常執(zhí)行的。2.50判斷對錯: Python變量使用前必須先聲明,并且一旦聲明就不能在當前作用域內(nèi)改變其類型了。2.51判斷對錯: Python不允

13、許使用關鍵字作為變量名,但是允許使用內(nèi)置函數(shù)名作為變量名,不過這會改變函數(shù)名的含義,所以不建議這樣做。2.52判斷對錯:在Python中可以使用if 作為變量名。2.53判斷對錯:在Python 3.x中可以使用中文作為變量名。2.54判斷對錯: Python變量名必須以字母或下劃線開頭,并且區(qū)分字母大小寫。2.55判斷對錯: 加法運算符可以用來連接字符串并生成新字符串。2.56判斷對錯: x = 9999*9999這樣的語句在Python中無法運行,因為數(shù)字太大了超出了整型變量的表示范圍。2.57判斷對錯:3+4j不是合法的Python表達式。2.58判斷對錯:0o12f是合法的八進制數(shù)字。

14、6/10.2.59判斷對錯:只有Python擴展庫才需要導入以后才能使用其中的對象, Python標準庫不需要導入即可使用其中的所有對象。2.60判斷對錯:在 Python中 0xad 是合法的十六進制數(shù)字表示形式。2.61判斷對錯: 4j 是合法 Python 數(shù)字類型。2.62判斷對錯: Python使用縮進來體現(xiàn)代碼之間的邏輯關系,對縮進的要求非常嚴格。2.63判斷對錯: Python代碼的注釋只有一種方式,那就是使用#符號。2.64判斷對錯: 放在一對三引號之間的任何內(nèi)容將被認為是注釋。2.65判斷對錯:盡管可以使用import語句一次導入任意多個標準庫或擴展庫,但是仍建議每次只導入一

15、個標準庫或擴展庫。2.66判斷對錯:為了讓代碼更加緊湊,編寫Python程序時應盡量避免加入空格和空行。2.67判斷對錯:在Python 3.5 中運算符 + 不僅可以實現(xiàn)數(shù)值的相加、字符串連接,還可以實現(xiàn)列表、元組的連接和集合的并集運算。2.68判斷對錯:在Python中可以使用for作為變量名。2.69判斷對錯:在Python中可以使用id作為變量名,但是不建議這樣做。2.70判斷對錯:一個數(shù)字5 也是合法的 Python表達式。2.71判斷對錯:執(zhí)行語句from math importsin 之后,可以直接使用 sin() 函數(shù),例如sin(3) 。7/10.2.72判斷對錯:一般來說,Python擴展庫沒有通用于所有版本Python的,安裝時應選擇與已安裝Python 的版本對應的擴展庫。2.73判斷對錯: Python變量名區(qū)分大小寫,所以student和Student不是同一個變量。2.74判斷對錯:在Python 3.x 中 reduce()是內(nèi)置函數(shù)。2.75判斷對錯:如果只需要math 模塊中的sin() 函數(shù),建議使用from math import sin來導入,而不要使用import math導入整個模塊。2.76判斷對錯:表達式pow(3, 2) = 3 * 2的值為 True 。2.77判斷對錯

溫馨提示

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

評論

0/150

提交評論