最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

7.1 高階函數(shù)

2021-09-06 16:44 作者:海鷗之道  | 我要投稿

高階函數(shù)英文叫Higher-order function。什么是高階函數(shù)?我們以實際代碼為例子,一步一步深入概念。

變量可以指向函數(shù)

以Python內(nèi)置的求絕對值的函數(shù)abs()為例,調(diào)用該函數(shù)用以下代碼:

可見,abs(-10)是函數(shù)調(diào)用,而abs是函數(shù)本身。

要獲得函數(shù)調(diào)用結(jié)果,我們可以把結(jié)果賦值給變量:

但是,如果把函數(shù)本身賦值給變量呢?

結(jié)論:函數(shù)本身也可以賦值給變量,即:變量可以指向函數(shù)。

如果一個變量指向了一個函數(shù),那么,可否通過該變量來調(diào)用這個函數(shù)?用代碼驗證一下:

成功!說明變量f現(xiàn)在已經(jīng)指向了abs函數(shù)本身。直接調(diào)用abs()函數(shù)和調(diào)用變量f()完全相同。

函數(shù)名也是變量

那么函數(shù)名是什么呢?函數(shù)名其實就是指向函數(shù)的變量!對于abs()這個函數(shù),完全可以把函數(shù)名abs看成變量,它指向一個可以計算絕對值的函數(shù)!

如果把abs指向其他對象,會有什么情況發(fā)生?

abs指向10后,就無法通過abs(-10)調(diào)用該函數(shù)了!因為abs這個變量已經(jīng)不指向求絕對值函數(shù)而是指向一個整數(shù)10!

當然實際代碼絕對不能這么寫,這里是為了說明函數(shù)名也是變量。要恢復(fù)abs函數(shù),請重啟Python交互環(huán)境。

注:由于abs函數(shù)實際上是定義在import builtins模塊中的,所以要讓修改abs變量的指向在其它模塊也生效,要用import builtins; builtins.abs = 10。

傳入函數(shù)

既然變量可以指向函數(shù),函數(shù)的參數(shù)能接收變量,那么一個函數(shù)就可以接收另一個函數(shù)作為參數(shù),這種函數(shù)就稱之為高階函數(shù)。

一個最簡單的高階函數(shù):

當我們調(diào)用add(-5, 6, abs)時,參數(shù)x,yf分別接收-56abs,根據(jù)函數(shù)定義,我們可以推導(dǎo)計算過程為:

小結(jié)

把函數(shù)作為參數(shù)傳入,這樣的函數(shù)稱為高階函數(shù),函數(shù)式編程就是指這種高度抽象的編程范式。


7.1 高階函數(shù)的評論 (共 條)

分享到微博請遵守國家法律
东乌| 钦州市| 潜山县| 云林县| 乐平市| 从化市| 广宁县| 石首市| 信阳市| 孟州市| 漳浦县| 邮箱| 凤台县| 南充市| 桐梓县| 黄冈市| 福州市| 东明县| 汪清县| 宁都县| 扶沟县| 巴彦淖尔市| 交城县| 喀喇沁旗| 九江县| 阜阳市| 福建省| 平凉市| 浪卡子县| 蓬莱市| 梅河口市| 潼关县| 青田县| 黄山市| 松阳县| 磴口县| 卓尼县| 商丘市| 绥阳县| 泸西县| 塘沽区|