官术网_书友最值得收藏!

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ù)非常有用,之后會用到。

主站蜘蛛池模板: 济南市| 福清市| 西青区| 新乐市| 孙吴县| 富裕县| 胶南市| 滁州市| 安乡县| 那坡县| 罗定市| 安化县| 延吉市| 崇左市| 辽阳市| 芜湖县| 唐河县| 武陟县| 双城市| 英吉沙县| 乌拉特前旗| 九江市| 鹤岗市| 玛沁县| 岳阳市| 丽水市| 应用必备| 武胜县| 苏尼特右旗| 新绛县| 贵港市| 固镇县| 韶关市| 焉耆| 东乡族自治县| 那曲县| 哈尔滨市| 垦利县| 永善县| 中西区| 闸北区|