數(shù)學(xué)上的函數(shù),記做:
y = f(x)
是偉大的萊布尼茨(G.W.Leibniz)提出的椒丧。
在中國壹甥,最早由清代數(shù)學(xué)家李善蘭翻譯,其著作《代數(shù)學(xué)》中寫到:“凡此變數(shù)中函彼變數(shù)者壶熏,則此為彼之函數(shù)”句柠。
計算機中的函數(shù)也類似,不過要更寬泛棒假,比如x可以不止一個溯职,稱為參數(shù)……
函數(shù)好像一臺家用電器或者別的什么機器,空調(diào)帽哑、洗衣機谜酒、電視,我們可以通過開關(guān)妻枕、旋鈕等控制它僻族,輸入數(shù)據(jù),它會按照設(shè)計的功能執(zhí)行屡谐,返回某種結(jié)果述么。
從另一個角度看,對于整個程序而言愕掏,函數(shù)又好像機器中的零部件碉输、功能模塊,我們把大的復(fù)雜的問題分解為更小的問題亭珍,每個函數(shù)解決一個小問題敷钾,這樣像搭積木一樣我們就搭起了解決大問題的程序,而且肄梨,這些小的模塊還可以在其他程序中反復(fù)使用阻荒。
Scratch可以自制積木,它的功能接近于函數(shù)众羡。
Scratch 自制積木的例子
我們先做一個“小鳥琴”:
后面三只小鳥的代碼也類似侨赡,選擇不同的音符播放就可以了,這樣我們可以像彈琴那樣點擊小鳥來演奏音樂了。
現(xiàn)在在舞臺上添加上圖的代碼羊壹,當(dāng)我們按下空格鍵蓖宦,就可以輸入類似“ABCDEACACEE”這樣的“樂譜”,輸入以后油猫,小鳥琴就會把樂譜演奏出來稠茂。
這時,我們可能會想到情妖,我們有了播放不同樂譜的能力睬关,如果我們想在別的Scratch程序中播放某段音樂,比如我們想做一個考驗音樂記憶能力的小游戲毡证,我們就可以用這段代碼电爹,于是我們可以把這個功能放到一個自制積木里:
Python 函數(shù)的例子
哎呀料睛,懶得自己寫了丐箩,正好推薦一“本”網(wǎng)上的好書:
How to Think Like a Computer Scientist: Learning with Python 3
其中函數(shù)一章:
函數(shù)式編程
我們說過面向?qū)ο蟮木幊蹋瘮?shù)式編程(Functional Programming)是另一種很牛的編程思想或者方法恤煞,也是我喜愛的屎勘,就不多說了,推薦兩本正兒八經(jīng)的的編程學(xué)習(xí)書吧:
Haskell趣學(xué)指南(Learn You a Haskell for Great Good!)
The Little Schemer:遞歸與函數(shù)式的奧妙