函數式編程html
定義函數的方法:python
python中函數定義方法: def test(x): "The function definitions" x+=1 return x def:定義函數的關鍵字 test:函數名 ():內可定義形參 "":文檔描述(非必要,可是強烈建議爲你的函數添加描述信息) x+=1:泛指代碼塊或程序處理邏輯 return:定義返回值 調用運行:能夠帶參數也能夠不帶 函數名()
定義一個函數必需要有個return 結束,把函數看成一個變量去看待,若是沒有return python解釋器會隱式的返回None編程
局部變量名字和全局變量儘可能不要同名,當全局變量與局部變量同名時:數據結構
name='alex' def foo(): name='lhf' def bar(): print(name) return bar func=foo() func() 例二: name='alex' def foo(): name='lhf' def bar(): name='wupeiqi' def tt(): print(name) return tt return bar func=foo() func()()
遞歸調用函數函數式編程
調用一個函數的過程當中直接或間接調用自身自己函數
#_*_coding:utf-8_*_ __author__ = 'Linhaifeng' import time person_list=['alex','wupeiqi','yuanhao','linhaifeng'] def ask_way(person_list): print('-'*60) if len(person_list) == 0: return '沒人知道' person=person_list.pop(0) if person == 'linhaifeng': return '%s說:我知道,老男孩就在沙河匯德商廈,下地鐵就是' %person print('hi 美男[%s],敢問路在何方' %person) print('%s回答道:我不知道,但念你慧眼識豬,你等着,我幫你問問%s...' %(person,person_list)) time.sleep(3) res=ask_way(person_list) # print('%s問的結果是: %res' %(person,res)) return res res=ask_way(person_list) print(res)
1. 必須有一個明確的結束條件(函數結束點return)ui
2. 每次進入更深一層遞歸時,問題規模相比上次遞歸都應有所減小spa
3. 遞歸效率不高,遞歸層次過多會致使棧溢出(在計算機中,函數調用是經過棧(stack)這種數據結構實現的,每當進入一個函數調用,棧就會加一層棧幀,每當函數返回,棧就會減一層棧幀。因爲棧的大小不是無限的,因此,遞歸調用的次數過多,會致使棧溢出)code
參考:https://www.cnblogs.com/gui-zi/p/7156185.htmlhtm