新聞中心
下面給大家一個(gè)寶貴的建議,對(duì)于那些從來(lái)沒(méi)有學(xué)習(xí)過(guò)編程或者并非計(jì)算機(jī)專(zhuān)業(yè)的編程學(xué)習(xí)者而言,Python是***的選擇之一,并建議那些初學(xué)的程序員先從Python開(kāi)始學(xué)習(xí)編程。

今天用Python模板函數(shù)寫(xiě)了兩個(gè)程序,水仙花數(shù)和***數(shù)!經(jīng)典的c練習(xí)題!水仙花數(shù)的程序很小,沒(méi)什么感覺(jué),***數(shù)的程序就復(fù)雜一些了!同學(xué)用c寫(xiě),我用Python寫(xiě),代碼幾乎是對(duì)等翻譯!我用的機(jī)器cpu主頻超過(guò)同學(xué)的兩倍,內(nèi)存是同學(xué)的4倍,就這樣,程序運(yùn)行的時(shí)間幾乎相同(10w個(gè)數(shù)據(jù))。
可想而知,Python模板函數(shù)作為解釋型語(yǔ)言,速度上面確實(shí)是個(gè)巨大的問(wèn)題!我曾經(jīng)看到有文章說(shuō),就算對(duì)解釋型語(yǔ)言,Python也是其中比較慢的,可怕。想象一下運(yùn)行起來(lái)比basic還慢的程序。。。!瘋了!還有就是,Python模板函數(shù)運(yùn)行起來(lái)必須帶模板的名稱(chēng)!比如開(kāi)方的函數(shù)!
在函數(shù)式編程里面, 我們可以定義匿名函數(shù),也可以把函數(shù)賦值給一個(gè)變量或作為參數(shù)傳遞給另外一個(gè)函數(shù),Python語(yǔ)言很早就支持函數(shù)式編程,我們可以用lambda關(guān)鍵字定義一個(gè)匿名函數(shù),然后賦值給一個(gè)變量,如下所示:
- from string import strip,upper
- #functions:
- #
- def map_add(x):
- return x+3
- #
- if __name__=='__map_add__':
- map_add(x)
- #zip file
- def zip_file():
- #open file
- f = open('map.txt')
- lines = f.readlines()
- print lines
- f.close()
- #
- print 'BEFORE\n'
- for eachline in lines:
- print '[%s]' % eachline[:-1]
- #
- print 'AFTER\n'
- for eachline in map(upper, map(strip, lines)):
- print '[%s]' % eachline
- #
- if __name__=='__zip_file__':
- zip_file()
lambda定義的匿名函數(shù)可以引用外圍函數(shù)的變量,上面的代碼中,第二個(gè)lambda表達(dá)式定義的匿名函數(shù)引用了***個(gè)匿名函數(shù)的參數(shù)n,因?yàn)?**個(gè)匿名函數(shù)是第二個(gè)匿名函數(shù)的外圍函數(shù)。
除了lambda表達(dá)式之外,Python模板函數(shù)還支持將函數(shù)作為參數(shù)傳遞給另外一個(gè)函數(shù),有點(diǎn)類(lèi)似于C語(yǔ)言中的函數(shù)指針,Python語(yǔ)言?xún)?nèi)建的函數(shù)filter,map,reduce就可以接受函數(shù)參數(shù)。
filter(function, sequence)會(huì)遍歷sequence中的每一個(gè)item,并以該item為參數(shù)調(diào)用function,如果function返回ture,就將該item加到結(jié)果sequence中,這就達(dá)到過(guò)濾sequence的效果,作為參數(shù)的function就是過(guò)濾的條件,例子如下:
- >>>reduce(lambda x,y:x*y, [1,2,3,4,5]#((((1*2)*3)*4)*5
- >>>120
- >>>reduce(lambda x,y:x*y, [1,2,3], 10)
- >>>60 #((1*2)*3)*10
這里用lambda定義的匿名函數(shù)來(lái)定義過(guò)濾條件,在list a中返回是偶數(shù)的items,下面這個(gè)模塊以一個(gè)現(xiàn)有的文本為參數(shù),清除多余空格,再把所有文字都轉(zhuǎn)換為大寫(xiě)(英文)。為子演示程序要?jiǎng)?chuàng)建一個(gè)map.txt該文件中有幾行前后有多余空格的字符串。
【編輯推薦】
- 如何使Python嵌入C++應(yīng)用程序?
- 深入探討Ruby與Python語(yǔ)法比較
- Python學(xué)習(xí)資料介紹分享
- Python學(xué)習(xí)經(jīng)驗(yàn)談:版本、IDE選擇及編碼解 決方案
- 淺析Python的GIL和線程安全
本文名稱(chēng):Python模板函數(shù)簡(jiǎn)介說(shuō)明
文章位置:http://www.5511xx.com/article/codgehd.html


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