python面試題整理(二)

2021-08-22 04:54:55 字數 2490 閱讀 3853

前一篇博文博主總結了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...