21年最新Python面試題及答案彙總詳解(上)
Python面試你做準備了嗎?下面小編整理了一套2021年最新Python常見面試題目,及Python面試題目答案彙總。希望能夠幫助到大家。
21年最新Python面試題及答案彙總詳解(上)
1、列表(list)和元組(tuple)有什麼區別?
在我每一次應聘Python資料科學家的面試中,這個問題都會被問到。所以對這個問題的答案,我可以說是瞭如指掌。
列表是可變的。建立後可以對其進行修改。
元組是不可變的。元組一旦建立,就不能對其進行更改。
列表表示的是順序。它們是有序序列,通常是同一型別的物件。比如說按建立日期排序的所有使用者名稱,如["Seth","Ema","Eli"]。
元組表示的是結構。可以用來儲存不同資料型別的元素。比如記憶體中的資料庫記錄,如(2,"Ema","2020–04–16")(#id,名稱,建立日期)。
2、如何進行字串插值?
在不匯入Template類的情況下,有3種方法進行字串插值。
name=Chris#
1、fstringsprint(fHello{name})#
2、%operatorprint(Hey%s%s%(name,name))#
3、formatprint("Mynameis{}"、format((name)))
3、“is”和“==”有什麼區別?
在我的Python職業生涯的早期,我認為它們是相同的,因而製造了一些bug。所以請大家聽好了,“is”用來檢查物件的標識(id),而“==”用來檢查兩個物件是否相等。我們將透過一個例子說明。建立一些列表並將其分配給不同的名字。請注意,下面的b指向與a相同的物件。
a=[1,2,3]b=ac=[1,2,3]
下面來檢查是否相等,你會注意到結果顯示它們都是相等的。
print(a==b)print(a==c)#=>;True#=>;True
但是它們具有相同的標識(id)嗎?答案是不。
print(aisb)print(aisc)#=>;True#=>;False
我們可以透過列印他們的物件標識(id)來驗證這一點。
print(id(a))print(id(b))print(id(c))#=>;
4369567560#=>;
4369567560#=>;
4369567624
你可以看到:c和a和b具有不同的標識(id)。
4、什麼是裝飾器(decorator)?
這是每次面試我都會被問到的另一個問題。它本身就值得寫一篇文章。如果你能自己用它編寫一個例子,那麼說明你已經做好了準備。
裝飾器允許透過將現有函式傳遞給裝飾器,從而向現有函式新增一些額外的功能,該裝飾器將執行現有函式的功能和新增的額外功能。
我們將編寫一個裝飾器,該裝飾器會在呼叫另一個函式時記錄日誌。
編寫裝飾器函式logging。它接受一個函式func作為引數。它還定義了一個名為log_function_called的函式,它先執行列印出一些“函式func被呼叫”的資訊(print(f{func}called、)),然後呼叫函式func()。最後返回定義的函式。
deflogging(func):deflog_function_called():print(f{
func
}
called、
)
func()returnlog_function_called
讓我們編寫其他兩個函式,我們最終會將裝飾器新增到其中(但還沒有)。
defmy_name():print(chris)deffriends_name():print(naruto)my_name()friends_name()#=>;chris#=>;naruto
現在將裝飾器新增到上面編寫的兩個函式之中。
@loggingdefmy_name():print(chris)@loggingdeffriends_name():print(naruto)my_name()friends_name()#=>;<;functionmy_nameat0x10fca5a60>;called、#=>;chris#=>;<;functionfriends_nameat0x10fca5f28>;called、#=>;naruto
現在,你瞭解瞭如何僅僅透過在其上面新增@logging(裝飾器),就能夠輕鬆地將日誌新增到我們編寫的任何函式中。
5、解釋Range函式
Range函式可以用來建立一個整數列表,一般用在for迴圈中。它有3種使用方法。
Range函式可以接受1到3個引數,引數必須是整數。
請注意:我已經將range的每種用法包裝在一個遞推式構造列表(listcomprehension)中,以便我們可以看到生成的值。
用法1-range(stop):生成從0到引數“stop”之間的整數。
[iforiinrange(10)]#=>;[0,1,2,3,4,5,6,7,8,9]
用法2-range(start,stop):生成從引數“start”到“stop”之間的整數
[iforiinrange(2,10)]#=>;[2,3,4,5,6,7,8,9]
用法3-range(start,stop,step):以引數“step”為步長,生成從“start”到“stop”之間的整數。
[iforiinrange(2,10,2)]#=>;[2,4,6,8]
6、定義一個名為car的類,它有兩個屬性:“color”和“speed”。然後建立一個例項並返回“speed”。
classCar:def__init__(self,color,speed):self、color=colorself、speed=speedcar=Car(red,100mph)car、speed#=>;100mph
7、Python中的例項方法、靜態方法和類方法有什麼區別?
例項方法:接受self引數,並且與類的特定例項相關。
靜態方法:使用裝飾器@staticmethod,與特定例項無關,並且是自包含的(不能修改類或例項的屬性)。
類方法:接受cls引數,並且可以修改類本身。我們將透過一個虛構的CoffeeShop類來說明它們之間的區別。
classCoffeeShop:specialty=espressodef__init__(self,coffee_price):self、coffee_price=coffee_price#instancemethoddefmake_coffee(self):print(fMaking{self、specialty}for${self、coffee_price})#staticmethod@staticmethoddefcheck_weather():print(Itssunny)#classmethod@classmethoddefchange_specialty(cls,specialty):cls、specialty=specialtyprint(fSpecialtychangedto{specialty})
CoffeeShop類有一個屬性specialty,預設值設為“espresso”。CoffeeShop類的每個例項初始化時都使用了coffee_price這個屬性。同時,它還有3個方法,一個例項方法,一個靜態方法和一個類方法。
讓我們將coffee_price的值設為5,來初始化CoffeeShop的一個例項。然後呼叫例項方法make_coffee。
coffee_shop=CoffeeShop(5)coffee_shop、make_coffee()#=>;Makingespressofor$5
現在我們來呼叫靜態方法。靜態方法無法修改類或例項狀態,因此通常用於工具函式,例如,把2個數字相加。我們這裡用它來檢查天氣。天氣晴朗。太好了!
coffee_shop、check_weather()#=>;Itssunny
現在讓我們使用類方法修改CoffeeShop的屬性specialty,然後呼叫make_coffee()方法來製作咖啡。
coffee_shop、change_specialty(dripcoffee)#=>;Specialtychangedtodripcoffeecoffee_shop、make_coffee()#=>;Makingdripcoffeefor$5
注意,make_coffee過去是用來做意式濃縮咖啡(espresso)的,但現在用來做滴濾咖啡(dripcoffee)了!
8、“func”和“func()”有什麼區別?
這個問題的目的是想看看你是否理解所有函式也是Python中的物件。
deffunc():print(Imafunction)func#=>;function__main__、func>;func()#=>;Imafunction
func是表示函式的物件,它可以被分配給變數或傳遞給另一個函式。帶圓括號的func()呼叫該函式並返回其輸出。
9、解釋map函式的工作原理。
Map函式返回一個列表,該列表由對序列中的每個元素應用一個函式時返回的值組成。
defadd_three(x):returnx+3li=[1,2,3][iforiinmap(add_three,li)]#=>;[4,5,6]
上面,我對列表中的每個元素的值加了3。
10、解釋reduce函式的工作原理。
這個問題很棘手,在你使用過它幾次之前,你得努力嘗試自己能夠理解它。reduce接受一個函式和一個序列,然後對序列進行迭代。在每次迭代中,當前元素和前一個元素的輸出都傳遞給函式。最後,返回一個值。
fromfunctoolsimportreducedefadd_three(x,y):returnx+yli=[1,2,3,5]reduce(add_three,li)#=>;11
返回11,它是1+2+3+5的總和。
11、解釋filter函式的工作原理
Filter函式顧名思義,是用來按順序過濾元素。
每個元素都被傳遞給一個函式,如果函式返回True,則在輸出序列中返回該元素;如果函式返回False,則將其丟棄。
defadd_three(x):ifx%2==0:returnTrueelse:returnFalseli=[1,2,3,4,5,6,7,8][iforiinfilter(add_three,li)]#=>;[2,4,6,8]
注意上面所有不能被2整除的元素如何被刪除的。
12、Python是按引用呼叫還是按值呼叫?
如果你在谷歌上搜尋這個問題並閱讀前幾頁,你就要準備好進入語義的迷宮了。你最好只是瞭解它的工作原理。
不可變物件(如字串、數字和元組等)是按值呼叫的。請注意下面的例子,當在函式內部修改時,name的值在函式外部不會發生變化。name的值已分配給記憶體中該函式作用域的新塊。
name=chrdefadd_chars(s):s+=isprint(s)add_chars(name)print(name)#=>;chris#=>;chr
可變物件(如列表等)是透過引用呼叫的。注意下面的例子中,函式外部定義的列表在函式內部的修改是如何影響到函式外部的。函式中的引數指向記憶體中儲存li值的原始塊。
li=[1,2]defadd_element(seq):seq、append(3)print(seq)add_element(li)print(li)#=>;[1,2,3]#=>;[1,2,3]
13、如何使用reverse函式反轉一個列表?
下面的程式碼對一個列表呼叫reverse()函式,對其進行修改。該方法沒有返回值,但是會對列表的元素進行反向排序。
li=[a,b,c]print(li)li、reverse()print(li)#=>;[a,b,c]#=>;[c,b,a]
14、字串乘法是如何工作的?
讓我們看看將字串"cat"乘以3的結果。
cat*3#=>;catcatcat
該字串將自身連線3次。
15、列表乘法是如何工作的?
我們來看看將列表[1,2,3]乘以2的結果。
[1,2,3]*2#=>;[1,2,3,1,2,3]
輸出的列表包含了重複兩次的列表[1,2,3]的內容。
本文來自千鋒教育,轉載請註明出處。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31548651/viewspace-2781223/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 最新PHP面試題彙總(附答案)PHP面試題
- ASP net core面試題彙總及答案面試題
- Java常見面試題及答案彙總Java面試題
- 2019 Python最新面試題及答案16道題Python面試題
- 經典Java面試題彙總及答案解析Java面試題
- 2019年最新Java面試題及答案整理(上)Java面試題
- 技術乾貨:Kotlin面試題彙總及答案Kotlin面試題
- 技術乾貨:Tomcat面試題彙總及答案Tomcat面試題
- 技術乾貨:Kubernetes面試題彙總及答案面試題
- 面試寶典:15道MyBatis 常見面試題彙總及答案MyBatis面試題
- 技術乾貨:spring cloud面試題彙總及答案SpringCloud面試題
- 【半月刊】前端高頻面試題及答案彙總前端面試題
- 2022年最新資料庫經典面試題及答案彙總(含PostgreSQL、Oracle、MySQL)資料庫面試題OracleMySql
- 【總結】Python爬蟲面試題及答案(二)Python爬蟲面試題
- 2018年最新Java面試題及答案Java面試題
- 【半月刊 3】前端高頻面試題及答案彙總前端面試題
- 【半月刊 4】前端高頻面試題及答案彙總前端面試題
- 【半月刊 2】前端高頻面試題及答案彙總前端面試題
- JavaScript常見面試題彙總(含答案)JavaScript面試題
- Dubbo面試25題答案詳解面試
- 2023最新MySQL高頻面試題彙總MySql面試題
- 深圳地區近期面試100多道題彙總(含超詳細答案)面試
- 24個Jvm面試題總結及答案JVM面試題
- 藍橋杯歷年(省賽)試題彙總及試題詳解
- Python面試基礎題小彙總Python面試
- Python開發面試題及部分答案分享!Python面試題
- Java開發基礎常見面試題及答案彙總(實用乾貨!)Java面試題
- 【彙總】Python爬蟲常見面試題!Python爬蟲面試題
- 2019最新Web前端經典面試試題及答案,持續更新Web前端面試
- Paycom 面試題彙總面試題
- Spring面試題彙總Spring面試題
- mysql 面試題彙總MySql面試題
- iOS 面試題彙總iOS面試題
- LLM面試題彙總面試題
- 最新BAT大廠面試精華彙總(2024詳細版)BAT面試
- 12個iOS技術面試題及答案總結iOS面試題
- 各大網際網路公司面試流程及面試題彙總面試題
- 最新精選Java面試題,附答案!Java面試題