Python工程師必考的面試題有哪些

這篇文章主要介紹Python工程師必考的面試題有哪些,文中介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們一定要看完!

創(chuàng)新互聯(lián)建站-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比定邊網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式定邊網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋定邊地區(qū)。費用合理售后完善,十余年實體公司更值得信賴。

第1題:Python里面如何實現(xiàn)tuple和list的轉(zhuǎn)換?

函數(shù)tuple(seq)可以把所有可迭代的(iterable)序列轉(zhuǎn)換成一個tuple, 元素不變,排序也不變

list轉(zhuǎn)為tuple:

temp_list = [1,2,3,4,5]

將temp_list進行強制轉(zhuǎn)換:tuple(temp_list)

確定是否轉(zhuǎn)換成功:print(type(temp_list))

函數(shù)list(seq)可以把所有的序列和可迭代的對象轉(zhuǎn)換成一個list,元素不變,排序也不變

tuple轉(zhuǎn)為list:

temp_tuple = (1,2,3,4,5)

方法類似,也是進行強制轉(zhuǎn)換即可:list(temp_tuple)

確定是否轉(zhuǎn)換成功:print(type(temp_tuple))

第2題:Python里面search()和match()的區(qū)別?

它們兩個都在re模塊中

·match()函數(shù)是在string的開始位置匹配,如果不匹配,則返回None;

·search()會掃描整個string查找匹配;

match()

>>> import re
>>> print(re.match('hello','helloworld').span())  # 開頭匹配到
(0, 5)
>>> print(re.match('hello','nicehelloworld').span()) # 開頭沒有匹配到
Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    print(re.match('hello','nicehelloworld').span())
AttributeError: 'NoneType' object has no attribute 'span'
>>>

search()

>>> print(re.search('a','abc'))
<_sre.SRE_Match object; span=(0, 1), match='a'>
>>> print(re.search('a','bac').span())
(1, 2)
>>>

結(jié)論:match() 使用限制更多

第3題: 如何用Python刪除一個文件?

os模塊的使用

os.remove(path)

刪除文件 path,刪除時候如果path是一個目錄, 拋出 OSError錯誤。如果要刪除目錄,請使用rmdir()。

remove() 同 unlink() 的功能是一樣的

os.remove('a.txt')
os.removedirs(path)

遞歸地刪除目錄。類似于rmdir(), 如果子目錄被成功刪除, removedirs() 將會刪除父目錄;但子目錄沒有成功刪除,將拋出錯誤。

例如,os.removedirs(“a/b/c”) 將首先刪除c目錄,然后刪除b和a,如果他們是空的話,則子目錄不能成功刪除,將拋出OSError異常

os.rmdir(path)

刪除目錄 path,要求path必須是個空目錄,否則拋出OSError錯誤

第4題: is 和 == 的區(qū)別?

hon中對象包含的三個基本要素,分別是:id(身份標(biāo)識)、type(數(shù)據(jù)類型)和value(值)

id 身份標(biāo)識,就是在內(nèi)存中的地址

完整的舉例

>>> a = 'hello'
>>> b = 'hello'
>>> print(a is b)
True
>>> print(a==b)
True
>>> a = 'hello world'
>>> b = 'hello world'
>>> print(a is b)
False
>>> print(a == b)
True
>>> a = [1,2,3]
>>> b = [1,2,3]
>>> print(a is b)
False
>>> print(a == b)
True
>>> a = [1,2,3]
>>> b = a
>>> print(a is b)
True
>>> print(a == b)
True
>>>

==是python標(biāo)準(zhǔn)操作符中的比較操作符,用來比較判斷兩個對象的value(值)是否相等

is也被叫做同一性運算符(對象標(biāo)示符),這個運算符比較判斷的是對象間的唯一身份標(biāo)識,也就是id(內(nèi)存中的地址)是否相同

我們在檢查 a is b 的時候,其實相當(dāng)于檢查 id(a) == id(b)。而檢查a == b 的時候,實際是調(diào)用了對象 a 的 __eq()__ 方法,a == b 相當(dāng)于 a.__eq__(b)。

這里還有一個問題,為什么 a 和 b 都是 “hello” 的時候,a is b 返回True,而 a 和 b都是 “hello world” 的時候,a is b 返回False呢?

這是因為前一種情況下Python的字符串駐留機制起了作用。對于較小的字符串,為了提高系統(tǒng)性能Python會保留其值的一個副本,當(dāng)創(chuàng)建新的字符串的時候直接指向該副本即可。

所以 “hello” 在內(nèi)存中只有一個副本,a 和 b 的 id 值相同,而 “hello world” 是長字符串,不駐留內(nèi)存,Python中各自創(chuàng)建了對象來表示 a 和 b,所以他們的值相同但 id 值不同。

試一下當(dāng)a=247,b=247時它們的id還是否會相等。事實上Python 為了優(yōu)化速度,使用了小整數(shù)對象池,避免為整數(shù)頻繁申請和銷毀內(nèi)存空間。而Python 對小整數(shù)的定義是 [-5, 257),只有數(shù)字在-5到256之間它們的id才會相等,超過了這個范圍就不行了。

>>> a = 247
>>> b = 247
>>> print(a is b)
True
>>> a = 258
>>> b = 258
>>> print(a is b)
False
>>>

is 是檢查兩個對象是否指向同一塊內(nèi)存空間,而 == 是檢查他們的值是否相等。is 比 == 更加嚴(yán)格。

第5題:a=1, b=2, 不用中間變量交換a和b的值?

方法一

>>> a = 5
>>> b = 6
>>> a = a+b
>>> b = a-b
>>> a = a-b

方法二

>>> a = a^b
>>> b = b^a
>>> a = a^b

方法三

a,b = b,a

第6題:說說你對zen of python的理解,你有什么辦法看到它?

Python之禪

import this

以上是Python工程師必考的面試題有哪些的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

網(wǎng)站標(biāo)題:Python工程師必考的面試題有哪些
文章網(wǎng)址:http://bm7419.com/article8/goioop.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、品牌網(wǎng)站制作、電子商務(wù)、網(wǎng)站設(shè)計、商城網(wǎng)站、外貿(mào)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

綿陽服務(wù)器托管