Python基礎(chǔ)學(xué)習(xí):高階函數(shù)

  1. map
    map() 函數(shù)接收兩個參數(shù),一個是函數(shù),一個是 Iterable,map 將傳入的函數(shù)依次作用到序列的每個元素,并把結(jié)果作為新的 Iterator 返回。


    image.png
  2. reduce
    reduce 把一個函數(shù)作用在一個序列 [x1, x2, x3,...] 上,這個函數(shù)必須接收兩個參數(shù), reduce 把結(jié)果繼續(xù)和序列的下一個元素做累積計算。


    image.png

    字符串轉(zhuǎn)換成整數(shù):


    image.png
  3. filter
    filter()函數(shù)用于過濾序列。filter() 也接收一個函數(shù)和一個序列。和 map() 不同的是 filter() 把傳入的函數(shù)依次作用于每個元素,然后根據(jù)返回值是 True 還是 False 決定保留還是丟棄該元素。


    image.png
  4. sorted
    Python內(nèi)置的sorted()函數(shù)可以對list進(jìn)行排序,還可以接收一個key函數(shù)來實現(xiàn)自定義的排序,key指定的函數(shù)將作用于list的每個元素上,并根據(jù)key函數(shù)返回的結(jié)果進(jìn)行排序:


    image.png
  5. 閉包


    image.png

    調(diào)用lazy_sum()時,返回的并不是求和結(jié)果,而是求和函數(shù):


    image.png

    調(diào)用函數(shù)f時,才真正計算求和結(jié)果:
    image.png

    在函數(shù) lazy_sum 中又定義了函數(shù) sum ,并且,內(nèi)部函數(shù) sum 可以引用外部函數(shù) lazy_sum 的參數(shù)和局部變量,當(dāng) lazy_sum 返回函數(shù) sum 時,相關(guān)參數(shù)和變量都保存在返回的函數(shù)中,這種稱為“閉包(Closure)”。

  6. 匿名函數(shù):lambda
    匿名函數(shù)有個限制,就是只能有一個表達(dá)式,不用寫 return ,返回值就是該表達(dá)式的結(jié)果。


    image.png
  7. 裝飾器
    在代碼運行期間動態(tài)增加功能的方式,稱之為“裝飾器”(Decorator)。裝飾器接受一個函數(shù)作為參數(shù),并返回一個函數(shù)。定義時需要借助Python的@語法:


    image.png

    把@log放到now()函數(shù)的定義處,相當(dāng)于執(zhí)行了語句:


    image.png

    由于 log() 是一個decorator,返回一個函數(shù),所以,原來的 now() 函數(shù)仍然存在,只是現(xiàn)在同名的 now 變量指向了新的函數(shù),于是調(diào)用 now() 將執(zhí)行新函數(shù),即在 log() 函數(shù)中返回的 wrapper() 函數(shù)。wrapper() 函數(shù)的參數(shù)定義是 (*args, **kw) ,因此, wrapper() 函數(shù)可以接受任意參數(shù)的調(diào)用。在 wrapper() 函數(shù)內(nèi),首先打印日志,再緊接著調(diào)用原始函數(shù)。
    一個完整的decorator的寫法如下:
    image.png

    或者針對帶參數(shù)的decorator:


    image.png
  8. 偏函數(shù)
    functools.partial 的作用就是,把一個函數(shù)的某些參數(shù)給固定住(也就是設(shè)置默認(rèn)值),返回一個新的函數(shù),調(diào)用這個新函數(shù)會更簡單。


    image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 直接上正文 函數(shù)是Python內(nèi)建支持的一種封裝,我們通過把大段代碼拆成函數(shù),通過一層一層的函數(shù)調(diào)用,就可以把復(fù)雜...
    OzanShareing閱讀 560評論 0 0
  • 文章來源 基本是拷貝的內(nèi)容,目的是為了將知識點整理在一起。除了一個小結(jié)(裝飾器部分)提供了我自己的解法,其余基本沒...
    王詩翔閱讀 710評論 0 1
  • 函數(shù)式編程就是一種抽象程度很高的編程范式,純粹的函數(shù)式編程語言編寫的函數(shù)沒有變量,因此,任意一個函數(shù),只要輸入是確...
    齊天大圣李圣杰閱讀 1,639評論 0 2
  • 要點: 函數(shù)式編程:注意不是“函數(shù)編程”,多了一個“式” 模塊:如何使用模塊 面向?qū)ο缶幊蹋好嫦驅(qū)ο蟮母拍?、屬性?..
    victorsungo閱讀 1,697評論 0 6
  • 冬天的凌冽已經(jīng)持續(xù)了不少日子,城市的每個角落都在接受著嚴(yán)寒的考驗。 在南方,白雪之信徒是最常見的了,他們總希望在某...
    曬鵝閱讀 698評論 3 27

友情鏈接更多精彩內(nèi)容