python基礎——匿名函數及遞迴函式

來源:互聯網
上載者:User

標籤:包含   深度   div   src   ==   img   錯誤   函數定義   span   

python基礎——匿名函數及遞迴函式

 

1 匿名函數文法

 

匿名函數lambda x: x * x實際上就是:

def f(x):    return x * x

關鍵字lambda表示匿名函數,冒號前面的x表示函數參數

 匿名函數有個限制,就是只能有一個運算式,不用寫return,傳回值就是該運算式的結果

 

2 匿名函數舉例

用匿名函數有個好處,因為函數沒有名字,不必擔心函數名衝突。此外,匿名函數也是一個函數對象,也可以把匿名函數賦值給一個變數,再利用變數來調用該函數:

 

>>> f = lambda x: x * x>>> f<function <lambda> at 0x10453d7d0>>>> f(5)25

 

同樣,也可以把匿名函數作為傳回值返回,比如:

def build(x, y):    return lambda: x * x + y * y

  

遞迴函式 

 

1、遞迴函式定義

 

遞迴就是引用(或者調用)自己的意思

 

 

 

有用的遞迴函式包含以下幾個部分:

 

1 必須有一個明確的結束條件

 

2 每次進入更深一層遞迴時,問題規模相比於上次遞迴都應有減少

 

3 遞迴效率不高,遞迴層次過多會導致棧溢出(在電腦中,函數調用時通過棧stack這種資料結構實現的,每當進入一個函數調用,棧就會加一層幀,每當函數返回,棧就會減一層棧幀。由於棧的大小不是無限的,所以,遞迴調用的次數過多,會導致棧溢出,程式會以一個“超過最大遞迴深度”的錯誤資訊結束)

 

  遞迴中每次函數被調用,針對這個調用函數的新命名空間會被建立,意味著當函數調用“自身”時,實際上啟動並執行是兩個不同的函數(或者說是同一個函數具有兩個不同的命名空間)

 

 

遞迴的深度:

import sysprint(sys.getrecursionlimit())

輸出結果為:

1000

  

2 遞迴函式實現二分法舉例

 

二分法舉例:

data=list(range(1000))def sear(num,data):    if len(data)>1:        #二分        mid_index=int(len(data)/2)        mid_value=data[mid_index]        if num > data[mid_index]:            #num在列表的右邊            data=data[mid_index:]            sear(num,data)        elif num < data[mid_index]:            #num在列表的左邊            data=data[:mid_index]            sear(num,data)        else:            print("find it")            return    else:        if data[0]==num:            print(‘find it‘)        else:            print(‘not exists‘)sear(0,data)sear(999,data)sear(10000,data)

輸出結果為:

find itfind itnot exists

 

求5的階乘

def num (n):    if n == 1:        return 1    else:        return num (n-1)*nprint(num(5))

輸出結果為:

120

  

方法和函數的區別

  1 調用方法不一樣 函數括弧 方法點號

  2 方法只對調用它的對象有用

函數沒有綁定任何對象

方法可以綁定到具體的對象

 

函數式編程

 函數式編程概念

編程風格

1不會修改外部值的狀態

2 精簡,可讀性差

 

python基礎——匿名函數及遞迴函式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.