- 機(jī)械工程師Python編程:入門、實戰(zhàn)與進(jìn)階
- (西)安琪兒·索拉·奧爾巴塞塔
- 400字
- 2024-09-10 16:13:07
2.1.4 高階函數(shù)
高階函數(shù)是指輸入?yún)?shù)為一個(或一組)函數(shù)或返回值為函數(shù)的函數(shù)。
讓我們分別看看這兩種情況的例子。
1. 函數(shù)作為輸入?yún)?shù)
假設(shè)我們想寫一個函數(shù),它可以多次執(zhí)行另一個函數(shù)。我們可以這樣實現(xiàn):

如你所見,repeat_fn函數(shù)的第一個參數(shù)是另一個函數(shù),它被重復(fù)執(zhí)行,執(zhí)行次數(shù)由第二個參數(shù)給出。然后,我們定義了另一個函數(shù)say_hi,它會在屏幕上輸出字符串“Hi there!”。調(diào)用repeat_fn函數(shù)并傳入say_hi的結(jié)果是屏幕上的五個問候語。
我們可以使用一個匿名的lambda函數(shù)來重寫這個例子:

lambda函數(shù)使我們不必再定義一個函數(shù)來輸出信息。
2. 函數(shù)作為返回值
讓我們來看看一個返回另一個函數(shù)的函數(shù)。假設(shè)我們想要定義一個驗證函數(shù),以驗證一個字符串是否包含某些字符序列。我們可以編寫一個名為make_contains_validator的函數(shù),它接受一個序列并返回一個函數(shù),來驗證字符串是否包含該序列:

我們可以使用這個函數(shù)來生成驗證函數(shù),如下所示,

可以用這個函數(shù)來檢查輸入的字符串是否包含符號@:

高階函數(shù)非常有用,之后會用到。
推薦閱讀
- DBA攻堅指南:左手Oracle,右手MySQL
- Learning Data Mining with Python
- Mastering Natural Language Processing with Python
- Elasticsearch for Hadoop
- Mastering JavaScript High Performance
- Visual FoxPro程序設(shè)計習(xí)題集及實驗指導(dǎo)(第四版)
- Scala Reactive Programming
- 51單片機(jī)C語言開發(fā)教程
- Yii Project Blueprints
- Unity 3D/2D移動開發(fā)實戰(zhàn)教程
- Python Essentials
- Java 從入門到項目實踐(超值版)
- HTML5移動Web開發(fā)
- ROS機(jī)器人編程實戰(zhàn)
- 用Python動手學(xué)統(tǒng)計學(xué)