亚洲熟女综合色一区二区三区,亚洲精品中文字幕无码蜜桃,亚洲va欧美va日韩va成人网,亚洲av无码国产一区二区三区,亚洲精品无码久久久久久久

千萬不要覺得你會(huì)Python了,80%的人看完這6道題都傻眼了

本文由馬哥教育Python自動(dòng)化實(shí)戰(zhàn)班3期學(xué)員推薦,轉(zhuǎn)載自簡(jiǎn)書,作者為Manjusaka,內(nèi)容略經(jīng)小編改編和加工,觀點(diǎn)跟作者無關(guān),最后感謝作者的辛苦貢獻(xiàn)與付出。

Python在設(shè)計(jì)上堅(jiān)持了清晰劃一的風(fēng)格,這使得Python成為一門易讀、易維護(hù),并且被大量用戶所歡迎的、用途廣泛的語言。設(shè)計(jì)者開發(fā)時(shí)總的指導(dǎo)思想是,對(duì)于一個(gè)特定的問題,只要有一種最好的方法來解決就好了。

最近覺得 Python 太“簡(jiǎn)單了”,于是在老司機(jī)面前放肆了一把:“我覺得 Python 是世界上最簡(jiǎn)單的語言!”。于是老司機(jī)給我了一份滿分 100 分的6道題,下面是題目的錯(cuò)誤實(shí)錄:

1.你恐怕不會(huì)留意的列表生成器


檢查一下下面的代碼會(huì)報(bào)錯(cuò)的原因,并說出來?

千萬不要覺得你會(huì)Python了,80%的人看完這6道題都傻眼了

列表生成器的正解答案如下:

千萬不要覺得你會(huì)Python了,80%的人看完這6道題都傻眼了

千萬不要覺得你會(huì)Python了,80%的人看完這6道題都傻眼了

或者答案可以是這樣

千萬不要覺得你會(huì)Python了,80%的人看完這6道題都傻眼了

此內(nèi)容的再補(bǔ)充

千萬不要覺得你會(huì)Python了,80%的人看完這6道題都傻眼了

千萬不要覺得你會(huì)Python了,80%的人看完這6道題都傻眼了

2.據(jù)說是最難的裝飾器


描述:按照實(shí)際情況來寫一個(gè)類裝飾器用來度量函數(shù)/方法運(yùn)行時(shí)間,你看怎么實(shí)現(xiàn)?

千萬不要覺得你會(huì)Python了,80%的人看完這6道題都傻眼了

此類裝飾器能夠運(yùn)行在普通函數(shù)上:

千萬不要覺得你會(huì)Python了,80%的人看完這6道題都傻眼了

此類裝飾器運(yùn)行在方法上會(huì)報(bào)錯(cuò),為什么?

千萬不要覺得你會(huì)Python了,80%的人看完這6道題都傻眼了

如果堅(jiān)持使用類裝飾器,應(yīng)該如何修改?

此問題的答案是

千萬不要覺得你會(huì)Python了,80%的人看完這6道題都傻眼了

千萬不要覺得你會(huì)Python了,80%的人看完這6道題都傻眼了

3.Python 調(diào)用機(jī)制看你會(huì)不會(huì)


描述:Python開發(fā)者們知道?__call__?方法可以用來重載圓括號(hào)調(diào)用,其實(shí)問題根本不是這個(gè)。

千萬不要覺得你會(huì)Python了,80%的人看完這6道題都傻眼了

現(xiàn)在大家可以看到?a()?似乎等價(jià)于?a.__call__()?,好的,現(xiàn)在我們寫出了如下的代碼

千萬不要覺得你會(huì)Python了,80%的人看完這6道題都傻眼了

千萬不要覺得你會(huì)Python了,80%的人看完這6道題都傻眼了

千萬不要覺得你會(huì)Python了,80%的人看完這6道題都傻眼了

千萬不要覺得你會(huì)Python了,80%的人看完這6道題都傻眼了

4.描述符你會(huì)犯錯(cuò)嗎?


描述:如果要寫一個(gè) Exam 類,其屬性 math 為 [0,100] 的整數(shù),若賦值時(shí)不在此范圍內(nèi)則拋出異常,你是否決定用描述符來實(shí)現(xiàn)這個(gè)需求。

千萬不要覺得你會(huì)Python了,80%的人看完這6道題都傻眼了

看起來一切正常。不過嘗試說明是什么問題,改寫 Grade 描述符試一下:

千萬不要覺得你會(huì)Python了,80%的人看完這6道題都傻眼了

不過這樣會(huì)導(dǎo)致更大的問題,請(qǐng)問該怎么解決這個(gè)問題?

答案

千萬不要覺得你會(huì)Python了,80%的人看完這6道題都傻眼了

兩種方法

第一種:

千萬不要覺得你會(huì)Python了,80%的人看完這6道題都傻眼了

千萬不要覺得你會(huì)Python了,80%的人看完這6道題都傻眼了

千萬不要覺得你會(huì)Python了,80%的人看完這6道題都傻眼了

5.Python 繼承機(jī)制的坑


描述

試求出以下代碼的輸出結(jié)果。

千萬不要覺得你會(huì)Python了,80%的人看完這6道題都傻眼了

答案:輸出是 36 ,具體可以參考?New-style Classes?,?multiple-inheritance

6. Python 特殊方法的使用模式


描述:寫了一個(gè)通過重載?new?方法來實(shí)現(xiàn)單例模式的類。

千萬不要覺得你會(huì)Python了,80%的人看完這6道題都傻眼了

現(xiàn)在有一堆類要實(shí)現(xiàn)為單例模式,打算照著寫一個(gè)元類,這樣可以讓代碼復(fù)用:

千萬不要覺得你會(huì)Python了,80%的人看完這6道題都傻眼了

報(bào)錯(cuò)啊,下面這段代碼能夠捕獲一切屬性調(diào)用并打印參數(shù)

千萬不要覺得你會(huì)Python了,80%的人看完這6道題都傻眼了

試解釋為什么給?getattribute?打補(bǔ)丁成功,而?new?打補(bǔ)丁失敗。
如果堅(jiān)持使用元類給?new?打補(bǔ)丁來實(shí)現(xiàn)單例模式,應(yīng)該怎么修改?

答案

其實(shí)這是最氣人的一點(diǎn),類里的?__new__?是一個(gè)?staticmethod?因此替換的時(shí)候必須以?staticmethod?進(jìn)行替換。答案如下:

千萬不要覺得你會(huì)Python了,80%的人看完這6道題都傻眼了

結(jié)語


Python這門語言還是博大精深的,如果你現(xiàn)在剛剛學(xué)不久就以為很好了,小心這里面其實(shí)有很多坑。

相關(guān)新聞

歷經(jīng)多年發(fā)展,已成為國(guó)內(nèi)好評(píng)如潮的Linux云計(jì)算運(yùn)維、SRE、Devops、網(wǎng)絡(luò)安全、云原生、Go、Python開發(fā)專業(yè)人才培訓(xùn)機(jī)構(gòu)!