python 函數式編程

函數式編程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

相關文章
相關標籤/搜索