久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

常見(jiàn)面試題整理--Python概念篇

 自然科學(xué)思維 2016-12-03

希望此文可以長(zhǎng)期更新并作為一篇Python的面試寶典,。每一道題目都附有詳細(xì)解答,以及更加詳細(xì)的回答鏈接,。此篇是概念篇,,下一篇會(huì)更新面試題代碼篇。

(一),、這兩個(gè)參數(shù)是什么意思:*args,,**kwargs?我們?yōu)槭裁匆褂盟鼈儯?/span>

答:如果我們不確定往一個(gè)函數(shù)中傳入多少參數(shù),,或者我們希望以元組(tuple)或者列表(list)的形式傳參數(shù)的時(shí)候,,我們可以使用*args(單星號(hào))。如果我們不知道往函數(shù)中傳遞多少個(gè)關(guān)鍵詞參數(shù)或者想傳入字典的值作為關(guān)鍵詞參數(shù)的時(shí)候我們可以使用**kwargs(雙星號(hào)),,args,、kwargs兩個(gè)標(biāo)識(shí)符是約定俗成的用法。

另一種答法:當(dāng)函數(shù)的參數(shù)前面有一個(gè)星號(hào)*號(hào)的時(shí)候表示這是一個(gè)可變的位置參數(shù),,兩個(gè)星號(hào)**表示這個(gè)是一個(gè)可變的關(guān)鍵詞參數(shù),。星號(hào)*把序列或者集合解包(unpack)成位置參數(shù),,兩個(gè)星號(hào)**把字典解包成關(guān)鍵詞參數(shù)。

代碼輔助理解:


(二),、談一談Python的裝飾器(decorator)

裝飾器本質(zhì)上是一個(gè)Python函數(shù),它可以讓其它函數(shù)在不作任何變動(dòng)的情況下增加額外功能,,裝飾器的返回值也是一個(gè)函數(shù)對(duì)象,。它經(jīng)常用于有切面需求的場(chǎng)景。比如:插入日志,、性能測(cè)試,、事務(wù)處理、緩存,、權(quán)限校驗(yàn)等,。有了裝飾器我們就可以抽離出大量的與函數(shù)功能無(wú)關(guān)的雷同代碼進(jìn)行重用。

有關(guān)于具體的裝飾器的用法看這里:裝飾器 - 廖雪峰的官方網(wǎng)站


(三),、簡(jiǎn)要描述Python的垃圾回收機(jī)制(garbage collection)

Python中的垃圾回收是以引用計(jì)數(shù)為主,,標(biāo)記-清除分代收集為輔。

  • 引用計(jì)數(shù):Python在內(nèi)存中存儲(chǔ)每個(gè)對(duì)象的引用計(jì)數(shù),,如果計(jì)數(shù)變成0,,該對(duì)象就會(huì)消失,分配給該對(duì)象的內(nèi)存就會(huì)釋放出來(lái),。

  • 標(biāo)記-清除:一些容器對(duì)象,,比如list、dict,、tuple,,instance等可能會(huì)出現(xiàn)引用循環(huán),對(duì)于這些循環(huán),,垃圾回收器會(huì)定時(shí)回收這些循環(huán)(對(duì)象之間通過(guò)引用(指針)連在一起,,構(gòu)成一個(gè)有向圖,對(duì)象構(gòu)成這個(gè)有向圖的節(jié)點(diǎn),,而引用關(guān)系構(gòu)成這個(gè)有向圖的邊),。

  • 分代收集:Python把內(nèi)存根據(jù)對(duì)象存活時(shí)間劃分為三代,對(duì)象創(chuàng)建之后,,垃圾回收器會(huì)分配它們所屬的代,。每個(gè)對(duì)象都會(huì)被分配一個(gè)代,而被分配更年輕的代是被優(yōu)先處理的,,因此越晚創(chuàng)建的對(duì)象越容易被回收,。

如果你想要深入了解Python的GC機(jī)制,點(diǎn)擊這里:[轉(zhuǎn)載]Python垃圾回收機(jī)制--完美講解!


(四),、Python多線程(multi-threading),。這是個(gè)好主意嗎,?

Python并不支持真正意義上的多線程,Python提供了多線程包,。Python中有一個(gè)叫Global Interpreter Lock(GIL)的東西,,它能確保你的代碼中永遠(yuǎn)只有一個(gè)線程在執(zhí)行。經(jīng)過(guò)GIL的處理,,會(huì)增加執(zhí)行的開(kāi)銷,。這就意味著如果你先要提高代碼執(zhí)行效率,使用threading不是一個(gè)明智的選擇,,當(dāng)然如果你的代碼是IO密集型,,多線程可以明顯提高效率,相反如果你的代碼是CPU密集型的這種情況下多線程大部分是雞肋,。

想要深入詳細(xì)了解多線程,,點(diǎn)擊這里:詳解Python中的多線程編程_python

想了解一下IO密集和CPU密集可以點(diǎn)擊這里:CPU-bound(計(jì)算密集型) 和I/O bound(I/O密集型)


(五)、 說(shuō)明os,sys模塊不同,,并列舉常用的模塊方法,?

官方文檔:

  • os模板提供了一種方便的使用操作系統(tǒng)函數(shù)的方法

  • sys模板可供訪問(wèn)由解釋器使用或維護(hù)的變量和與解釋器交互的函數(shù)

另一種回答:

os模塊負(fù)責(zé)程序與操作系統(tǒng)的交互,提供了訪問(wèn)操作系統(tǒng)底層的接口,。sys模塊負(fù)責(zé)程序與Python解釋器的交互,,提供了一系列的函數(shù)和變量用戶操作Python運(yùn)行時(shí)的環(huán)境。

一些常用的方法:一些常用的用法示例:

想要了解更詳細(xì)的使用請(qǐng)?jiān)L問(wèn):os和sys模塊 - 君醉


(六),、什么是lambda表達(dá)式,?它有什么好處?

簡(jiǎn)單來(lái)說(shuō),,lambda表達(dá)式通常是當(dāng)你需要使用一個(gè)函數(shù),,但是又不想費(fèi)腦袋去命名一個(gè)函數(shù)的時(shí)候使用,也就是通常所說(shuō)的匿名函數(shù),。

lambda表達(dá)式一般的形式是:關(guān)鍵詞lambda后面緊接一個(gè)或多個(gè)參數(shù),,緊接一個(gè)冒號(hào)“:”,緊接一個(gè)表達(dá)式,。lambda表達(dá)式是一個(gè)表達(dá)式不是一個(gè)語(yǔ)句,。

想更加詳細(xì)的了解Python中的Lamdba表達(dá)式可以點(diǎn)擊這里:Lambda 表達(dá)式有何用處?如何使用,? - Python


(七),、Python中pass語(yǔ)句的作用是什么?

pass語(yǔ)句不會(huì)執(zhí)行任何操作,,一般作為占位符或者創(chuàng)建占位程序


(八),、Python是如何進(jìn)行類型轉(zhuǎn)換的?

Python提供了將變量或值從一種類型轉(zhuǎn)換為另一種類型的內(nèi)置方法。

(九),、Python里面如何拷貝一個(gè)對(duì)象,?

Python中對(duì)象之間的賦值是按引用傳遞的,如果要拷貝對(duì)象需要使用標(biāo)準(zhǔn)模板中的copy

  • copy.copy:淺拷貝,,只拷貝父對(duì)象,,不拷貝父對(duì)象的子對(duì)象。

  • copy.deepcopy:深拷貝,,拷貝父對(duì)象和子對(duì)象,。

(十)、__new__和__init__的區(qū)別,。

  • __init__為初始化方法,,__new__方法是真正的構(gòu)造函數(shù),。

  • __new__是實(shí)例創(chuàng)建之前被調(diào)用,,它的任務(wù)是創(chuàng)建并返回該實(shí)例,是靜態(tài)方法

  • __init__是實(shí)例創(chuàng)建之后被調(diào)用的,,然后設(shè)置對(duì)象屬性的一些初始值,。

總結(jié):__new__方法在__init__方法之前被調(diào)用,并且__new__方法的返回值將傳遞給__init__方法作為第一個(gè)參數(shù),,最后__init__給這個(gè)實(shí)例設(shè)置一些參數(shù),。

想要更加詳細(xì)的了解這兩個(gè)方法,請(qǐng)點(diǎn)擊:Python中的__new__及其用法


(十一),、Python中單下劃線和雙下劃線分別是什么,?

  • __name__:一種約定,Python內(nèi)部的名字,,用來(lái)與用戶自定義的名字區(qū)分開(kāi),,防止沖突

  • _name:一種約定,用來(lái)指定變量私有

  • __name:解釋器用_classname__name來(lái)代替這個(gè)名字用以區(qū)別和其他類相同的命名

想要更加詳細(xì)的了解這兩者的區(qū)別,,請(qǐng)點(diǎn)擊:Python中的下劃線(譯文)


(十二),、說(shuō)一說(shuō)Python自省。

自省就是面向?qū)ο蟮恼Z(yǔ)言所寫(xiě)的程序在運(yùn)行時(shí),,所能知道對(duì)象的類型,。簡(jiǎn)單一句話就是運(yùn)行時(shí)能夠獲得對(duì)象的類型。比如:type(),、dir(),、getattr()、hasattr(),、isinstance()  

想要完整的理解Python自省,,請(qǐng)點(diǎn)擊:Python自省(反射)指南

有關(guān)于元類以及單例模式會(huì)在后面文章中做詳細(xì)的解釋說(shuō)明。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買(mǎi)等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多