Python高階函數

來源:互聯網
上載者:User

標籤:傳回值   一個   機器人   none   分割   元組   預設參數   alt   不同類   

一 、 產生器

使用產生器的原因:列表產生式列印元素時會佔用更多的記憶體,而產生器是每次調用只產生一個值,不會過多佔用記憶體的,產生器又叫惰性求值,延遲計算。

2 產生器的讀取方式
A 使用X.next()進行讀取
B 使用for迴圈進行讀取(原因:產生器是可迭代對象)

產生器簡單一實例
使用產生器來獲得斐波那契數列

3 yield :能夠產生產生器對象的關鍵字

使得next()的指標在yield之前停止

購買圖書的產生器模型

無緩衝器的定製和購買圖書模型

如果中間有和緩衝區,則需要定義一個列表並將其情況加入列表中

產生器實戰應用:迷你聊天機器人

二 、內建高階函數

1 map :將函數func 範圍給定序列(s)的每一個元素,並且用一個列表提供傳回值,如果func 為None ,func 表現為一個身份函數,返回一個含有每個序列中元素的集合的n個元組的列表。

其函數傳入值為一個,不能同時傳入多個值

2 reduce:將二元函數作用與seq 序列的元素,每次攜帶一對(先前的結果以及下一個序列元素)連續第將現有的結果和下一個值作用在獲得後的結果上,最後減少我們的序列為一個單一的傳回值,如果初始值init給定,第一個比較會是init和第一個序列元素而不是序列的頭兩個元素

其函數參數只能傳入兩個,而不能同時傳入多個參數

3 filter:調用一個布爾函數func 來迭代便利每個seq中的元素,返回一個使func傳回值為True 的元素序列

4 sorted:用於排序


預設reverse=False,表示從小到大的順序進行排列,若reverse=True 則表示其排列為從大到小的順序排列

執行個體:不區分大小寫情況下對列表中的元素進行排序

三 、lambda函數(匿名函數)

lambda 函數名:函數傳回值
Lamdba 運算子

Lamdba args:expression (對參數進行調用並處理的)
args: 以逗號分割的參數列表
expression: 用到args 中個參數的運算式

Lamdba 語句定義的代碼必須是合法的運算式,不能出現多條件陳述式(可使用if 的三元運算式)和其他非運算式語句,如for 和 while 等

lambda函數用於計算一個序列的平方並返回一個序列

匿名函式聯合reduce高階函數進行對多重列表中的指定元素進行排序



四 、函數作為傳回值,裝飾器

閉包

函數(方法)裝飾器
裝飾器背後的主要動機是源自python物件導向編程,裝飾器是在函數調用之上的修飾,這些修飾僅是當聲明一個函數或者方法的時候,才會應用的額外調用
裝飾器的文法是以@開頭,接著是裝飾器函數的名字和選擇性參數,緊跟著裝飾器聲明的是被修飾的函數,和裝飾函數的選擇性參數。

1 基本裝飾器的形式

2 函數中傳入預設參數和必須參數的裝飾器的使用

3 匯入模組time進行計算函數的執行時間的裝飾器的使用

4 函數中傳入可變參數和關鍵字參數的裝飾器的使用

5裝飾器傳入值的處理

6 裝飾器中傳入多個不同類型的值的裝飾器的建立

五 實戰執行個體:

IP地址查詢系統

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.