【python】返回函數(shù)

返回函數(shù)

1)普通的函數(shù)返回一個(gè)值,返回函數(shù)則是把函數(shù)作為結(jié)果值返回
為什么要返回函數(shù):不需要立刻求和凛剥,而是在后面的代碼中熔恢,根據(jù)需要再計(jì)算,這樣就先返回求和的函數(shù)续徽。(這樣迂回的手段蚓曼,聽起來就好像為了優(yōu)化代碼。钦扭。纫版。)

def lazy_sum(*args):
    def sum():
        ax = 0
        for n in args:
            ax = ax + n
        return ax
    return sum

2)當(dāng)我們調(diào)用lazy_sum(1, 3, 5, 7, 9)時(shí),返回的并不是求和結(jié)果客情,而是求和函數(shù):

>>> f = lazy_sum(1, 3, 5, 7, 9)
>>> f
<function lazy_sum.<locals>.sum at 0x101c6ed90>

因?yàn)閘azy_sum()函數(shù)return sum意思就是其弊,無論lazy_sum(1, 3, 5, 7, 9)括號(hào)里寫成什么癞己,它都不會(huì)先計(jì)算,而是先返回一個(gè)sum函數(shù)梭伐,這個(gè)時(shí)候參數(shù)以及被包含在里面了痹雅。f = lazy_sum(1, 3, 5, 7, 9)意思是,將函數(shù)返回的sum這個(gè)函數(shù)對(duì)象賦值給了f,而不是調(diào)用了sum函數(shù)糊识,所以>>> f會(huì)返回一個(gè)類似內(nèi)存地址一樣的東西绩社。
3)關(guān)于 f 和 f():函數(shù)對(duì)象VS函數(shù)調(diào)用,鑒于一開始也混淆了赂苗,所以還是要強(qiáng)行解釋一波
把函數(shù)賦值給新的標(biāo)識(shí)符或作為參數(shù)傳遞給新的函數(shù)愉耙,針對(duì)的都是函數(shù)對(duì)象本身,而不是函數(shù)的調(diào)用拌滋。

def func():
    return "hello,world"
ref1 = func      #將函數(shù)對(duì)象賦值給ref1  賦值的結(jié)果是函數(shù) 朴沿,可調(diào)用
ref2 = func()  #調(diào)用函數(shù),將函數(shù)的返回值("hello,world"字符串)賦值給ref2 賦值的結(jié)果是str败砂,不可調(diào)用

所以赌渣,回答上面關(guān)于f = lazy_sum(1, 3, 5, 7, 9)的情況上面,可以寫成print(lazy_sum(1,3,5,7,9)())這個(gè)樣子昌犹。
4)注意:當(dāng)我們調(diào)用lazy_sum()時(shí)坚芜,每次調(diào)用都會(huì)返回一個(gè)新的函數(shù),即使傳入相同的參數(shù):

>>> f1 = lazy_sum(1,3,5,7,9)
>>> f2 = lazy_sum(1,3,5,7,9)
>>> print(f1==f2)
False

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末搞坝,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子魁袜,更是在濱河造成了極大的恐慌桩撮,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,084評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件峰弹,死亡現(xiàn)場離奇詭異店量,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)鞠呈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門融师,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蚁吝,你說我怎么就攤上這事旱爆∫ㄉ洌” “怎么了?”我有些...
    開封第一講書人閱讀 163,450評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵怀伦,是天一觀的道長脆烟。 經(jīng)常有香客問我,道長房待,這世上最難降的妖魔是什么邢羔? 我笑而不...
    開封第一講書人閱讀 58,322評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮桑孩,結(jié)果婚禮上张抄,老公的妹妹穿的比我還像新娘。我一直安慰自己洼怔,他們只是感情好署惯,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,370評(píng)論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著镣隶,像睡著了一般极谊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上安岂,一...
    開封第一講書人閱讀 51,274評(píng)論 1 300
  • 那天轻猖,我揣著相機(jī)與錄音,去河邊找鬼域那。 笑死咙边,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的次员。 我是一名探鬼主播败许,決...
    沈念sama閱讀 40,126評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼淑蔚!你這毒婦竟也來了市殷?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,980評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤刹衫,失蹤者是張志新(化名)和其女友劉穎醋寝,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體带迟,經(jīng)...
    沈念sama閱讀 45,414評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡音羞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,599評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了仓犬。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片嗅绰。...
    茶點(diǎn)故事閱讀 39,773評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出办陷,到底是詐尸還是另有隱情貌夕,我是刑警寧澤,帶...
    沈念sama閱讀 35,470評(píng)論 5 344
  • 正文 年R本政府宣布民镜,位于F島的核電站啡专,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏制圈。R本人自食惡果不足惜们童,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,080評(píng)論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望鲸鹦。 院中可真熱鬧慧库,春花似錦、人聲如沸馋嗜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽葛菇。三九已至甘磨,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間眯停,已是汗流浹背济舆。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留莺债,地道東北人滋觉。 一個(gè)月前我還...
    沈念sama閱讀 47,865評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像齐邦,于是被迫代替她去往敵國和親椎侠。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評(píng)論 2 354

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

  • 函數(shù)作為返回值 高階函數(shù)除了可以接受函數(shù)作為參數(shù)外侄旬,還可以把函數(shù)作為結(jié)果值返回肺蔚。 我們來實(shí)現(xiàn)一個(gè)可變參數(shù)的求和。通...
    喵在野閱讀 286評(píng)論 0 1
  • 返回函數(shù) 函數(shù)作為返回值儡羔。 調(diào)用A時(shí),返回函數(shù)a璧诵,調(diào)用a時(shí)汰蜘,返回值 閉包在函數(shù)里又定義了新函數(shù),內(nèi)部函數(shù)可以引用外...
    某米狼閱讀 620評(píng)論 0 1
  • 要點(diǎn): 函數(shù)式編程:注意不是“函數(shù)編程”之宿,多了一個(gè)“式” 模塊:如何使用模塊 面向?qū)ο缶幊蹋好嫦驅(qū)ο蟮母拍钭宀佟傩浴?..
    victorsungo閱讀 1,501評(píng)論 0 6
  • 函數(shù)式編程就是一種抽象程度很高的編程范式,純粹的函數(shù)式編程語言編寫的函數(shù)沒有變量,因此色难,任意一個(gè)函數(shù)泼舱,只要輸入是確...
    齊天大圣李圣杰閱讀 1,530評(píng)論 0 2
  • Python進(jìn)階框架 希望大家喜歡,點(diǎn)贊哦首先感謝廖雪峰老師對(duì)于該課程的講解 一枷莉、函數(shù)式編程 1.1 函數(shù)式編程簡...
    Gaolex閱讀 5,498評(píng)論 6 53