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

最近覺(jué)得 Python 太“簡(jiǎn)單了”,于是在老司機(jī)面前放肆了一把:“我覺(jué)得 Python 是世界上最簡(jiǎn)單的語(yǔ)言!”。于是老司機(jī)給我了一份滿分 100 分的6道題,下面是題目的錯(cuò)誤實(shí)錄:
1、你恐怕不會(huì)留意到的列表生成器
檢查一下下面的代碼會(huì)報(bào)錯(cuò)的原因,并說(shuō)出來(lái)?
列表生成器的正解答案如下:
或者答案可以是這樣
此內(nèi)容的再補(bǔ)充
2、據(jù)說(shuō)是最難得裝飾器描述:按照實(shí)際情況來(lái)寫(xiě)一個(gè)類(lèi)裝飾器用來(lái)度量函數(shù)/方法運(yùn)行時(shí)間,你看怎么實(shí)現(xiàn)?
此類(lèi)裝飾器能夠運(yùn)行在普通函數(shù)上:
此類(lèi)裝飾器運(yùn)行在方法上會(huì)報(bào)錯(cuò),為什么?
如果堅(jiān)持使用類(lèi)裝飾器,應(yīng)該如何修改?
此問(wèn)題的答案是
3、Python 調(diào)用機(jī)制看你會(huì)不會(huì)
描述:Python開(kāi)發(fā)者們知道 __call__ 方法可以用來(lái)重載圓括號(hào)調(diào)用,其實(shí)問(wèn)題根本不是這個(gè)。
現(xiàn)在大家可以看到 a() 似乎等價(jià)于 a.__call__() ,好的,現(xiàn)在我們寫(xiě)出了如下的代碼
4、描述符你會(huì)犯錯(cuò)嗎?
描述:如果要寫(xiě)一個(gè) Exam 類(lèi),其屬性 math 為 [0,100] 的整數(shù),若賦值時(shí)不在此范圍內(nèi)則拋出異常,你是否決定用描述符來(lái)實(shí)現(xiàn)這個(gè)需求。
看起來(lái)一切正常。不過(guò)嘗試說(shuō)明是什么問(wèn)題,改寫(xiě) Grade 描述符試一下:
不過(guò)這樣會(huì)導(dǎo)致更大的問(wèn)題,請(qǐng)問(wèn)該怎么解決這個(gè)問(wèn)題?
答案
兩種方法
***種:
5、Python 繼承機(jī)制的坑
描述:
試求出以下代碼的輸出結(jié)果。
答案:輸出是 36 ,具體可以參考 New-style Classes , multiple-inheritance
6、Python 的特殊方法的使用模式
描述:寫(xiě)了一個(gè)通過(guò)重載 new 方法來(lái)實(shí)現(xiàn)單例模式的類(lèi)。
現(xiàn)在有一堆類(lèi)要實(shí)現(xiàn)為單例模式,打算照著寫(xiě)一個(gè)元類(lèi),這樣可以讓代碼復(fù)用:
報(bào)錯(cuò)啊,下面這段代碼能夠捕獲一切屬性調(diào)用并打印參數(shù)
試解釋為什么給 getattribute 打補(bǔ)丁成功,而 new 打補(bǔ)丁失敗。
如果堅(jiān)持使用元類(lèi)給 new 打補(bǔ)丁來(lái)實(shí)現(xiàn)單例模式,應(yīng)該怎么修改?
答案:
- 其實(shí)這是最氣人的一點(diǎn),類(lèi)里的 __new__ 是一個(gè) staticmethod 因此替換的時(shí)候必須以 staticmethod 進(jìn)行替換。答案如下:
結(jié)語(yǔ):
Python這門(mén)語(yǔ)言還是博大精深的,如果你現(xiàn)在剛剛學(xué)不久就以為很好了,小心這里面其實(shí)有很多坑。
本文題目:你有多懂Python?看完這6道題就知道了
URL分享:http://fisionsoft.com.cn/article/dpodsed.html


咨詢(xún)
建站咨詢(xún)
