有關(guān)Python 特性問(wèn)題說(shuō)明研究
大多數(shù)開發(fā)人員對(duì)于開發(fā)Python應(yīng)用程序的速度大約是用Java開發(fā)同類應(yīng)用程序速度的10倍,要是相比C/C++節(jié)約的時(shí)間就更多了,對(duì)開發(fā)速度采用何種評(píng)價(jià)標(biāo)準(zhǔn)一直是個(gè)很難確定的問(wèn)題,下文就對(duì)Python 特性進(jìn)行學(xué)習(xí)。
仔細(xì)分析一下,這2個(gè)參數(shù)中,有1個(gè)Python 特性是在request生存期內(nèi)不變的,而另外一個(gè)是用于過(guò)濾的值。所以最終用了一下lambda來(lái)做了個(gè)函數(shù)的分階段參數(shù)傳遞。例子如下,過(guò)濾函數(shù):
- # Normal statement-based flow control
- if
- <cond1>: func1()
- elif
- <cond2>: func2()
- else
- : func3()
- # Equivalent "short circuit" expression
- (<cond1>
- and
- func1())
- or
- (<cond2>
- and
- func2())
- or
- (func3())
- # Example "short circuit" expression
- >>> x = 3
- >>>
Python是一種動(dòng)態(tài)語(yǔ)言,而且還常常號(hào)稱是動(dòng)態(tài)語(yǔ)言里面最慢的一個(gè)。最近Ruby的出現(xiàn)才略微改變了一下這種情況。呵呵,聽說(shuō)Ruby比Python還要“動(dòng)態(tài)”一些。在Python中提高效率的一種可選辦法是確??勺x性的情況下避免使用動(dòng)態(tài)特性,比如過(guò)多的"."操作符就很低效。
另外,就是可以用一些函數(shù)式編程的方法,比如很多內(nèi)置函數(shù),如map()、filter()、zip()等等,應(yīng)用lambda也是個(gè)不錯(cuò)的辦法。自從 Python 1.0 以來(lái),Python 具有上面列出的大多數(shù) FP 特征。但對(duì)于大多數(shù) Python 特性,它們以一種非常混合的語(yǔ)言呈現(xiàn)。
很大程度上是因?yàn)?FONT size=+0>Python 特性的 OOP 特性,您可以使用希望使用的部分而忽略其余部分(直到在稍后需要它為止)。使用 Python 2.0, 列表內(nèi)涵添加了一些 非常棒的“句法上的粉飾”。雖然列表內(nèi)涵沒(méi)有添加什么新的能力,但它們使許多舊的能力看起來(lái)好了 許多。
Python 中 FP 的基本元素是函數(shù) map() 、 reduce() 和 filter() ,以及運(yùn)算符 lambda 。在 Python 1.x 中, apply() 函數(shù)對(duì)于將一個(gè)函數(shù)的列表返回值直接應(yīng)用于另一個(gè)函數(shù)也很方便。
Python 2.0 為這一目的提供了改進(jìn)的語(yǔ)法??赡茏屓顺泽@,但很少的這幾個(gè)函數(shù)(以及基本運(yùn)算符)幾乎足以編寫任何 Python程序;特別是,所有的流控制語(yǔ)句( if 、 elif 、 else 、 assert 、 try 、 except 、 finally 、 for 、 break 、 continue 、 while 、 def )可以只使用 FP 函數(shù)和運(yùn)算符以函數(shù)風(fēng)格處理。
雖然實(shí)際上消除程序中的所有流控制命令可能只對(duì)加入“混亂的 Python”競(jìng)爭(zhēng)(與看上去非常象 Lisp 的代碼)有用,但是理解 FP 是如何使用函數(shù)和遞歸來(lái)表示流控制是值得的。
【編輯推薦】