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