python函數(shù)式編程-高階函數(shù)與偏函數(shù)

高階函數(shù)

python 的函數(shù)不僅能接收普通的參數(shù)罗晕,還可以接收一個(gè)函數(shù)本身作為參數(shù)济欢,這樣的函數(shù)稱為高階函數(shù)

filter() 函數(shù)


filter() ,顧名思義小渊,這個(gè)函數(shù)是一個(gè)過濾器法褥。它接收一個(gè)函數(shù) f 和一個(gè) list,f 是一個(gè)判斷函數(shù)酬屉,對(duì)參數(shù)進(jìn)行判斷之后依據(jù)條件返回 TureFalse半等,filter() 就是用 f 對(duì) list 中的每個(gè)元素進(jìn)行判斷,自動(dòng)過濾掉結(jié)果為 False
的元素呐萨,將符合條件的元素組成的新 list 并返回.

s.strip(rm) 刪除 s 字符串中開頭杀饵、結(jié)尾處的 rm 序列的字符。

當(dāng)rm為空時(shí)谬擦,默認(rèn)刪除空白符(包括'\n', '\r', '\t', ' ')

sorted()函數(shù) 內(nèi)置函數(shù)切距,默認(rèn)按增序排序


sorted()也是一個(gè)高階函數(shù),它可以接受一個(gè)比較函數(shù)來實(shí)現(xiàn)自定義排序惨远,比較函數(shù)的定義是谜悟,傳入兩個(gè)待比較的元素x, y话肖,如果x應(yīng)該排在y前面則返回-1,如果x應(yīng)該排在y后面則返回1葡幸,其他返回0

sorted()函數(shù)返回一個(gè)新的lis

閉包


內(nèi)層函數(shù)引用了外層函數(shù)的變量(參數(shù)也算變量)最筒,然后返回內(nèi)層函數(shù)的情況,成為閉包(Closure).

def calc_sum(lst):
    def lazy_sum():
        return sum(lst)
    return lazy_sum

列表的賦值


對(duì)一個(gè)列表 蔚叨,例如l = ['1', '2', '3']床蜘,

  • 如果將它直接賦值給一個(gè)變量:a = l,則a是指向這個(gè)列表對(duì)象的變量蔑水,如果修改a邢锯,則直接修改了列表本身。如下:
>>> a = l
>>> a
['1', '2', '3']
>>> a[0] = '5'
>>> a
['5', '2', '3']
>>> l
['5', '2', '3']
  • 假設(shè)列表中一共有n個(gè)元素肤粱,若將列表l[]賦值給n個(gè)變量:a1, a2, a3 = l弹囚,其意義是將列表中的元素賦值給這些變量厨相,此時(shí)a1, a2, a3分別等于'1', '2', '3'.
  • 如果將列表賦值給多個(gè)變量领曼,但是變量數(shù)目不夠n個(gè),則會(huì)報(bào)錯(cuò)蛮穿。

函數(shù)裝飾器

在函數(shù)調(diào)用時(shí)想動(dòng)態(tài)地給函數(shù)增加一些新的功能庶骄,但是又不改變?cè)瘮?shù)的定義,使用函數(shù)裝飾器即可實(shí)現(xiàn)践磅。
函數(shù)裝飾器的本質(zhì)是一個(gè)高階函數(shù)
這樣做可以極大地簡(jiǎn)化代碼单刁,避免每個(gè)函數(shù)編寫重復(fù)代碼

格式:
函數(shù)裝飾器一般是這樣的:

@new_fn
def f1(args):
    pass

這就相當(dāng)于:

def f1(args):
    pass
f1 = new_fn(f1)

#其中new_fn是一個(gè)接收函數(shù)的高階函數(shù)

*此時(shí),原有的f1()就被徹底地隱藏了起來府适,調(diào)用f1()時(shí)只能調(diào)用經(jīng)過裝飾的函數(shù)

偏函數(shù)

有的函數(shù)需要多個(gè)參數(shù)羔飞,偏函數(shù)就是將個(gè)別參數(shù)固定了的新函數(shù)。例如:

def int2(x, base=2):
    return int(x, base)

functools.partial是一個(gè)創(chuàng)建一個(gè)偏函數(shù)的工具檐春,不需要我們自己定義int2()逻淌,可以直接使用下面的代碼創(chuàng)建一個(gè)新的函數(shù)int2:

>>> import functools
>>> int2 = functools.partial(int2, base=2)
>>> int2('1000000')
64

版權(quán)聲明 自由轉(zhuǎn)載 - 保持署名 - 不可商用 - 不可演繹 (CC3.0 創(chuàng)意共享3.0許可證

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市疟暖,隨后出現(xiàn)的幾起案子卡儒,更是在濱河造成了極大的恐慌,老刑警劉巖俐巴,帶你破解...
    沈念sama閱讀 212,454評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件骨望,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡欣舵,警方通過查閱死者的電腦和手機(jī)擎鸠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門缘圈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來糠亩,“玉大人,你說我怎么就攤上這事赎线。” “怎么了垂寥?”我有些...
    開封第一講書人閱讀 157,921評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵颠黎,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我滞项,道長(zhǎng),這世上最難降的妖魔是什么过椎? 我笑而不...
    開封第一講書人閱讀 56,648評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮戏仓,結(jié)果婚禮上疚宇,老公的妹妹穿的比我還像新娘。我一直安慰自己赏殃,他們只是感情好敷待,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評(píng)論 6 386
  • 文/花漫 我一把揭開白布仁热。 她就那樣靜靜地躺著,像睡著了一般举哟。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上妨猩,一...
    開封第一講書人閱讀 49,950評(píng)論 1 291
  • 那天诬乞,我揣著相機(jī)與錄音册赛,去河邊找鬼震嫉。 笑死,一個(gè)胖子當(dāng)著我的面吹牛票堵,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 39,090評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼措伐,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼军俊!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起粪躬,我...
    開封第一講書人閱讀 37,817評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎提前,沒想到半個(gè)月后泳唠,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體狈网,經(jīng)...
    沈念sama閱讀 44,275評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡笨腥,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評(píng)論 2 327
  • 正文 我和宋清朗相戀三年拓哺,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了扇雕。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片窥摄。...
    茶點(diǎn)故事閱讀 38,724評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖崭放,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情币砂,我是刑警寧澤,帶...
    沈念sama閱讀 34,409評(píng)論 4 333
  • 正文 年R本政府宣布亿蒸,位于F島的核電站掌桩,受9級(jí)特大地震影響边锁,放射性物質(zhì)發(fā)生泄漏波岛。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評(píng)論 3 316
  • 文/蒙蒙 一贡蓖、第九天 我趴在偏房一處隱蔽的房頂上張望曹鸠。 院中可真熱鬧斥铺,春花似錦、人聲如沸晾蜘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)省容。三九已至抖拴,卻和暖如春腥椒,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背笼蛛。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留往湿,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,503評(píng)論 2 361
  • 正文 我出身青樓领追,卻偏偏與公主長(zhǎng)得像响逢,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子舔亭,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容

  • 函數(shù)式編程就是一種抽象程度很高的編程范式钦铺,純粹的函數(shù)式編程語言編寫的函數(shù)沒有變量订雾,因此职抡,任意一個(gè)函數(shù),只要輸入是確...
    齊天大圣李圣杰閱讀 1,527評(píng)論 0 2
  • 要點(diǎn): 函數(shù)式編程:注意不是“函數(shù)編程”,多了一個(gè)“式” 模塊:如何使用模塊 面向?qū)ο缶幊蹋好嫦驅(qū)ο蟮母拍钜ぐ睢傩浴?..
    victorsungo閱讀 1,480評(píng)論 0 6
  • 本文翻譯自Functional Programming Howto 本文將介紹Python中函數(shù)式編程的特性壕探。在對(duì)...
    大蟒傳奇閱讀 2,603評(píng)論 4 14
  • 原文鏈接:https://github.com/EasyKotlin 值就是函數(shù),函數(shù)就是值李请。所有函數(shù)都消費(fèi)函數(shù),...
    JackChen1024閱讀 5,957評(píng)論 1 17
  • Python進(jìn)階框架 希望大家喜歡较幌,點(diǎn)贊哦首先感謝廖雪峰老師對(duì)于該課程的講解 一白翻、函數(shù)式編程 1.1 函數(shù)式編程簡(jiǎn)...
    Gaolex閱讀 5,494評(píng)論 6 53