網(wǎng)站首頁 編程語言 正文
一、高階函數(shù)
函數(shù)定義
python中,函數(shù)名是變量,下方這個method函數(shù)名看成變量,指向一個計算的函數(shù)!因此函數(shù)名其實就是指向函數(shù)的變量,故變量可指向函數(shù);
變量可指向函數(shù),且函數(shù)的變量可接受變量,那么任意一個函數(shù)可接受一個函數(shù)作為參數(shù),這種函數(shù)就叫高階函數(shù)
函數(shù)名可作為返回值、也可作為參數(shù)
def method(a,b):
return a+b
a = method
print(a(1,4))
#輸出; 5
(1)函數(shù)名作為參數(shù)
def fun(a):
return a*a
def fun1(a,b,c):
return a(b)+a(c)
print(fun1(fun(),1,5)) # fun()作為參數(shù),傳給fun1
#輸出:26
(2)函數(shù)名作為返回值
def fun(a):
def fun2(b):
return a*b
return fun2()
a = fun(1)
print(a) #外部函數(shù)返回的是一個函數(shù)對象,也就是一個變量,然后作為函數(shù)對象傳參,獲得內(nèi)部函數(shù)的返回值
print(a(3))
# 輸出:<function method.<locals>.method2 at 0x02B5E9C0>
6
二、常用的高階函數(shù)
map、filter、reduce
先講下匿名函數(shù)lambda,
語法格式:lambda[形參1,形參2,... :表達式]
表達式執(zhí)行后,返回冒號后表達式;
x = 1
lambda x:x+3
(1)map(function,iterable)
它第一個要傳的元素是函數(shù)名或lambda匿名函數(shù)表達式,第二個要傳的是可迭代對象;
python 2.x 返回列表,python 3.x 返回迭代器
array = [1,4,7]
a = map(lambda x:x+1,array)
print(a)
print(list(a))
輸出:<map object at 0x02AB11B0>
[2, 5, 8]
map()函數(shù)的作用就是將可迭代對象里的每個元素進行函數(shù)操作,然后將元素操作后所組成的可迭代對象返回
(2)filter(function, iterable)
同樣,它第一個要傳的元素是函數(shù)名或lambda匿名函數(shù)表達式,第二個要傳的是可迭代對象
array = [1,4,7]
a = filter(lambda x:x+1,array)
print(a)
print(list(a))
輸出:<filter object at 0x02AB11B0>
[1,4,7]
array = [1,4,7]
a = filter(lambda x:x%2==0,array)
print(a)
print(list(a))
輸出:<filter object at 0x02AB11B0>
[4]
filter函數(shù),就是將可迭代對象的元素帶入函數(shù),返回True的對象,一般用于篩選使用,省略for循環(huán)
(3)reduce(function, iterable)
它傳的是2個元素,將前2個元素帶入函數(shù)中,然后將返回值作為一個元素,與第三個元素進行運算,直到結(jié)束返回最后結(jié)果。
reduce(function, iterable[, initializer]),從左到右對一個序列的項進行累計
reduce() 函數(shù)在 python2 中是內(nèi)置函數(shù),在 python3 中放到了 functools 模塊下:
from functools import reduce
array = [1,2,3,4,5]
result = reduce(lambda x,y:x+y,array)
print(result)
#結(jié)果:15
1+2 = 3
3+3 = 6
6+4=10
10+5=15
原文鏈接:https://www.jianshu.com/p/1affcf1682d7
相關(guān)推薦
- 2022-12-19 Oracle?數(shù)據(jù)庫啟動過程的三階段、停庫四種模式詳解_oracle
- 2022-10-14 TorchServe部署yolov5項目(Docker篇)
- 2022-04-09 安裝Mongodb 提示:找不到msvcp140.dll
- 2022-04-12 解決error: failed to push some refs to ‘xxx(遠程倉庫)‘
- 2022-08-02 python生產(chǎn)環(huán)境禁用assert斷言的方法_python
- 2022-07-17 SQL?Server格式轉(zhuǎn)換函數(shù)Cast、Convert介紹_MsSql
- 2022-04-01 SQL?Server?事務(wù),異常和游標詳解_MsSql
- 2022-03-16 ASP.NET?Core開發(fā)Docker部署_基礎(chǔ)應(yīng)用
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支