深度剖析Python函數(shù)編程技巧
在Python函數(shù)編程里面, 我們可以定義匿名函數(shù),也可以把函數(shù)賦值給一個變量或作為參數(shù)傳遞給另外一個函數(shù),以遠低于Java編輯-編譯-測試的開發(fā)時間提升Java類庫的運用,代碼如下所示:
- >>> f=lambda(n):n**2
- >>> f(6)
- 36
- >>> f=lambda(n):lambda(m):n*m
- >>> g=f(5) #相當與g=lambda(m):5*m
- >>> g(9) #相當于5*9
- 45
lambda定義的匿名函數(shù)可以引用外圍函數(shù)的變量,上面的代碼中,第二個lambda表達式定義的匿名函數(shù)引用了第一個匿名函數(shù)的參數(shù)n,因為第一個匿名函數(shù)是第二個匿名函數(shù)的外圍函數(shù)。
除了lambda表達式之外,python還支持將函數(shù)作為參數(shù)傳遞給另外一個函數(shù),有點類似于C語言中的函數(shù)指針,Python函數(shù)編程內建的函數(shù)filter,map,reduce就可以接受函數(shù)參數(shù)。
filter(function, sequence)會遍歷sequence中的每一個item,并以該item為參數(shù)調用function,如果function返回ture,就將該item加到結果sequence中,這就達到過濾sequence的效果,作為參數(shù)的function就是過濾的條件,例子如下:
- >>> def add(x,y):
- return x+y
- >>> reduce(add,range(1,10))
- 45
IT部分通常要完成的任務相當繁重但支撐這些工作的資源卻很少,這已經成為公開的秘密。任何承諾提高編碼效率、降低軟件總成本的IT解決方案都應該進行 周到的考慮。Python所具有的一個顯著優(yōu)勢就是可以在企業(yè)的軟件創(chuàng)建和維護階段節(jié)約大量資金,而這兩個階段的軟件成本占到了軟件整個生命周期中總成本 的50%到95%。
Python清晰可讀的語法使得軟件代碼具有異乎尋常的易讀性,甚至對那些不是最初接觸和開發(fā)原始項目的程序員都 能具有這樣的強烈感覺。雖然某些程序員反對在Python代碼中大量使用空格。
不過,幾乎人人都承認Python代碼的可讀性遠勝于C或者Java,后兩 者都采用了專門的字符標記代碼塊結構、循環(huán)、函數(shù)以及其他編程結構的開始和結束。提倡Python的人還宣稱,采用這些字符可能會產生顯著的編程風格差 異,使得那些負責維護代碼的人遭遇代碼可讀性方面的困難。
Python明晰的語法使其成為一種學習曲線平和的編程語言。有經驗的程序員甚至可能在一天之內就掌握Python的基礎知識,至多不過一周作用就可以上手,而編程語言的專家則肯定會比他掌握C、C++、Java甚至Perl要快很多。
Python函數(shù)編程因其語法的明晰而獲得的最大好處或許該算是開發(fā)時間的大大降低了。一名從事企業(yè)級應用程序開發(fā)工作的開發(fā)人員告訴我,他所在單位的開發(fā)時間 因為Python的采用而大大節(jié)約。#t#
同時卻并沒有給軟件性能帶來任何負面影響,他說:“就我們的業(yè)務而言,快速地開發(fā)出新產品比開發(fā)出性能驚人的軟件產品 要重要得多,開發(fā)時間相比軟件的優(yōu)化要貴得多(以每小時計算)。
對開發(fā)速度采用何種評價標準一直是個很難確定的問題,不過通常情況下,普遍認為開發(fā)Python應用程序的速度大約是用Java開發(fā)同類應用程序速度的10倍。要是相比C/C++節(jié)約的時間就更多了。