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

下載本文檔

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

文檔簡介

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

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

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

4、na=lambdax,y:x+ya(3,11)3.Python 里面如何實現 tuple 和 list 的轉換?答:直接使用 tuple 和 list 函數就行了, type() 可以判斷對象的類型4.請寫出一段 Python 代碼實現刪除一個list 里面的重復元素答:1,使用 set 函數, set(list)2,使用字典函數,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 里面如何拷貝一個對象?(賦值,淺拷貝,深拷貝的區別)答:賦值( =),就是創建了對象的一個新的引用,修改其中任意一個變量都會影響到另一個。淺拷貝:創建一個新的對象, 但它包含的是對原始對象中包含項的引用 (如果用引用的方式修改其中一個對象,另外一個也會修改改變) 1, 完全切片方法; 2,工廠函數,如 list() ;3,copy 模塊的 copy() 函數 深拷貝:創建一個新的對象,并且遞歸的復制它所包含的對象(修改其中一個,另

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

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

8、大被替換的數量)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() 方法執行的效果跟 sub() 一樣,不過它會返回一個二維數組,包括替換后的新的字符串和總共替換的數量11.Python 里面 match() 和 search() 的區別?答: 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 的時候, <.>和<.?> 有什么區別?答:術語叫貪婪匹配 ( <.> )和非貪婪匹配 (<. ?> )4/10.例如 :test<.*> :test<.*?> :13.Python 里面如何生成隨機數?答: random 模塊隨機整數: random.randint(a,b) :返回隨機整數x,a<=x<=brandom.randrange(start,stop,step) :返回一個范圍在 (start,stop,step) 之間的隨機整數,不包括結束值。隨

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

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

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

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

15、個標準庫或擴展庫。2.66判斷對錯:為了讓代碼更加緊湊,編寫Python程序時應盡量避免加入空格和空行。2.67判斷對錯:在Python 3.5 中運算符 + 不僅可以實現數值的相加、字符串連接,還可以實現列表、元組的連接和集合的并集運算。2.68判斷對錯:在Python中可以使用for作為變量名。2.69判斷對錯:在Python中可以使用id作為變量名,但是不建議這樣做。2.70判斷對錯:一個數字5 也是合法的 Python表達式。2.71判斷對錯:執行語句from math importsin 之后,可以直接使用 sin() 函數,例如sin(3) 。7/10.2.72判斷對錯:一般來說,Python擴展庫沒有通用于所有版本Python的,安裝時應選擇與已安裝Python 的版本對應的擴展庫。2.73判斷對錯: Python變量名區分大小寫,所以student和Student不是同一個變量。2.74判斷對錯:在Python 3.x 中 reduce()是內置函數。2.75判斷對錯:如果只需要math 模塊中的sin() 函數,建議使用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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論