前一篇博文博主總結了10道python面試題,戳這裡可以回看,本文繼續整理python面試題,希望能幫到大家^_^。
11.迭代器和生成器的區別
1)迭代器是乙個更抽象的概念,任何物件,如果它的類有next方法和iter方法返回自己本身。對於string、list、dict、tuple等這類容器物件,使用for迴圈遍歷是很方便的。在後台for語句對容器物件呼叫iter()函式,iter()是python的內建函式。iter()會返回乙個定義了next()方法的迭代器物件,它在容器中逐個訪問容器內元素,next()也是python的內建函式。在沒有後續元素時,next()會丟擲乙個stopiteration異常
2)生成器(generator)是建立迭代器的簡單而強大的工具。它們寫起來就像是正規的函式,只是在需要返回資料的時候使用yield語句。每次next()被呼叫時,生成器會返回它脫離的位置(它記憶語句最後一次執行的位置和所有的資料值)
區別:生成器能做到迭代器能做的所有事,而且因為自動建立了__iter__()和next()方法,生成器顯得特別簡潔,而且生成器也是高效的,使用生成器表示式取代列表解析可以同時節省記憶體。除了建立和儲存程式狀態的自動方法,當發生器終結時,還會自動丟擲stopiteration異常
12.裝飾器的作用和功能:
引入日誌、函式執行時間統計、執行函式前預備處理、執行函式後的清理功能、許可權校驗等場景、快取
13.find和grep的區別
grep命令是一種強大的文字搜尋工具,grep搜尋內容串可以是正規表示式,允許對文字檔案進行模式查詢。如果找到匹配模式,grep列印包含模式的所有行。
find通常用來再特定的目錄下搜尋符合條件的檔案,也可以用來搜尋特定使用者屬主的檔案。
14.概括一下python中的yield用法和作用
(1)儲存當前執行狀態(斷點),然後暫停執行,即將函式掛起
(2)將yeild關鍵字後面表示式的值作為返回值返回,此時可以理解為起到了return的作用,當使用next()、send()函式讓函式從斷點處繼續執行,即喚醒函式。
15.python中is和==的區別
(1)python中物件包含的三個基本要素,分別是:id(身份標識) 、type(資料型別)和value(值)。
(2)『==』比較的是value值
(3)『is』比較的是id
16.簡述read、readline、readlines的區別
(1)read讀取整個檔案
(2)readline讀取下一行資料
(3)readlines讀取整個檔案到乙個迭代器以供我們遍歷(讀取 到乙個list中,以供使用,比較方便)
17.*args,**kwargs的作用是什麼?如何使用?
*args和**kwargs通常使用在函式定義裡,*args允許函式傳入不定量個數的非關鍵字引數,**kwargs允許函式傳入不定量個數的關鍵字引數
18.python中如何拷貝乙個物件?(賦值,淺拷貝,深拷貝的區別)
賦值(=),就是建立了物件的乙個新的引用,修改其中任意乙個變數都會影響到另乙個。
淺拷貝:建立乙個新的物件,但它包含的是對原始物件中包含項的引用(如果用引用的方式修改其中乙個物件,另外乙個也會修改改變)
深拷貝:建立乙個新的物件,並且遞迴的複製它所包含的物件(修改其中乙個,另外乙個不會改變)
19.分別說說cmp,map,filter的作用?
# cmp:compare比較
cmp(a,b) # ab 返回1 a=b返回0
# map:對映
map(function, iterable) # 將function作用於iterable,每個元素,將對應輸出結果儲存為乙個list
# 例:
def plus_one(x):
return x+1
map(plus_one,[1,2,3,4]) ===>[2,3,4,5]
# filter:過濾器
filter(function, iterable) # 將 function依次作用於iterable的每個元素,如果返回值為true, 保留元素,否則從iterable裡面刪除
# 例:
def bigger_than_three(x):
return (x>3)
filter(bigger_than_three,[1,2,3,4,5]) ===>[4,5]
20.請闡述__new__和__init__的區別?
__new__:建立物件時呼叫,會返回當前物件的乙個例項
__init__:建立完物件後呼叫,對當前物件的一些例項初始化,無返回值
呼叫順序:先呼叫__new__生成乙個例項再呼叫__init__方法對例項進行初始化,比如新增屬性。
面試題整理 二)
1.把二元查詢樹轉變成排序的雙向鍊錶 題目 輸入一棵二元查詢樹,將該二元查詢樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只調整指標的指向。10 6 14 4 8 12 16 轉換成雙向鍊錶 4 6 8 10 12 14 16。include include struct bstreenod...
Python 面試題整理
請用 python程式或你擅長的語言寫出下面問題的答案 1 乙個不固定長度的字串,找出連續最長的0或連續最長的1 提示1 1110001111 其中連續 3個1與3個0與4個1 程式反饋結果要是最長的是4個1 提示2 1010001010 程式反饋結果最長的是 3個0 提示3 題目問的是不固定長度 ...
Python面試題整理
1 class parent object x 1 class child1 parent pass class child2 parent pass print parent.x,child1.x,child2.x child1.x 2 print parent.x,child1.x,child2...