[python]函數(shù)與函數(shù)式編程復(fù)習(xí)

有一段時(shí)間高估了自己听诸,都沒(méi)有認(rèn)真看教程坐求。
現(xiàn)在慘了,得一課課復(fù)習(xí)蛇更!
要吸取教訓(xùn)瞻赶。
以下筆記重點(diǎn)為裝飾器

返回函數(shù)

注意1:當(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)
>>> f1==f2
False```
f1()和f2()的調(diào)用結(jié)果互不影響。


注意2:函數(shù)內(nèi)函數(shù)的變量可以被外層函數(shù)引用掌逛。
注意3:一種賦值方法

a,b,c = [1,2,3]
a
1

 
然后來(lái)理解下面的代碼:

def count():
fs = []
for i in range(1, 4):
def f():
return i*i
fs.append(f)
return fs


f1, f2, f3 = count()```
每次循環(huán)都創(chuàng)建了一個(gè)新的函數(shù)师逸,一共循環(huán)了三次,但因?yàn)闆](méi)有調(diào)用豆混,所以都只是一個(gè)函數(shù)名f篓像,然后fs = [f,f,f] 动知,這時(shí)候的i= 3,因此f1员辩,f2盒粮,f3賦值的時(shí)候都為f,調(diào)用都為3*3 = 9

而以下代碼中

def count():
    def f(j):
        g = lambda j:j*j
        return g
    fs = []
    for i in range(1, 4):
        fs.append(f(i))
    return fs

f(i)立刻被執(zhí)行奠滑,因此i的當(dāng)前值被調(diào)用

匿名函數(shù)

a = lambda m :b```
相當(dāng)于 

def a(m):
return b```

裝飾器

接受一個(gè)函數(shù)作為參數(shù)丹皱,并返回一個(gè)函數(shù),使得原來(lái)函數(shù)功能不變的情況下拓展函數(shù)功能
經(jīng)過(guò)我無(wú)數(shù)次的不同的嘗試以后宋税,有如下的總結(jié)摊崭。

總結(jié)1:當(dāng)裝飾器只有函數(shù)名的時(shí)候,將裝飾器下面的函數(shù)名作為其參數(shù)杰赛,如果裝飾器有函數(shù)名加上參數(shù)呢簸,那么相當(dāng)于一個(gè)帶參數(shù)的函數(shù)返回了一個(gè)函數(shù)后,再將被裝飾的函數(shù)名作為其參數(shù)乏屯。
當(dāng)裝飾器的函數(shù)名不接受參數(shù)的時(shí)候根时,則會(huì)提示錯(cuò)誤:
TypeError: log() takes 0 positional arguments but 1 was given

2.定義函數(shù)中,return作為一個(gè)函數(shù)定義的結(jié)束辰晕,return之后的print都不起作用,return之前的值都屬于函數(shù)的一部分啸箫。調(diào)用的時(shí)候print語(yǔ)句會(huì)直接打印出來(lái),return的儲(chǔ)存在你賦值的變量中伞芹,如果不賦值給變量則沒(méi)有意義忘苛,你用不了它。然后print變量的時(shí)候就會(huì)出來(lái)return的結(jié)果(不包括print后面的結(jié)果)
因此如果要在前后加上東西唱较,只能寫(xiě)在同一行利用占位符扎唾。

def m(x):
    print('1')
    return 3*x
    print('6')

a = m(10) #輸出1
print('分割')
print(a) #輸出30
print('分割')
m(10)  #輸出1
print('分割')
print(m(10)) #輸出 1 30

練習(xí):

def log(func):
    def wrapper(x):
        print('begin call \n %s \n end call' % func(x))
    return wrapper

def f(x):
     return x*x```

f(10)
begin call
100
end call


另一個(gè)練習(xí)只要用一個(gè)條件判斷即可,不再贅述南缓。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末胸遇,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子汉形,更是在濱河造成了極大的恐慌纸镊,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,248評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件概疆,死亡現(xiàn)場(chǎng)離奇詭異逗威,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)岔冀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門(mén)凯旭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事罐呼【媳” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,443評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵嫉柴,是天一觀的道長(zhǎng)厌杜。 經(jīng)常有香客問(wèn)我,道長(zhǎng)计螺,這世上最難降的妖魔是什么期奔? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,475評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮危尿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘馁痴。我一直安慰自己谊娇,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布罗晕。 她就那樣靜靜地躺著济欢,像睡著了一般。 火紅的嫁衣襯著肌膚如雪小渊。 梳的紋絲不亂的頭發(fā)上法褥,一...
    開(kāi)封第一講書(shū)人閱讀 49,185評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音酬屉,去河邊找鬼半等。 笑死,一個(gè)胖子當(dāng)著我的面吹牛呐萨,可吹牛的內(nèi)容都是我干的杀饵。 我是一名探鬼主播,決...
    沈念sama閱讀 38,451評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼谬擦,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼切距!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起惨远,我...
    開(kāi)封第一講書(shū)人閱讀 37,112評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤谜悟,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后北秽,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體葡幸,經(jīng)...
    沈念sama閱讀 43,609評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評(píng)論 2 325
  • 正文 我和宋清朗相戀三年贺氓,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了礼患。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,163評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖缅叠,靈堂內(nèi)的尸體忽然破棺而出悄泥,到底是詐尸還是另有隱情,我是刑警寧澤肤粱,帶...
    沈念sama閱讀 33,803評(píng)論 4 323
  • 正文 年R本政府宣布弹囚,位于F島的核電站,受9級(jí)特大地震影響领曼,放射性物質(zhì)發(fā)生泄漏鸥鹉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評(píng)論 3 307
  • 文/蒙蒙 一庶骄、第九天 我趴在偏房一處隱蔽的房頂上張望毁渗。 院中可真熱鬧,春花似錦单刁、人聲如沸灸异。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,357評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)肺樟。三九已至,卻和暖如春逻淌,著一層夾襖步出監(jiān)牢的瞬間么伯,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,590評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工卡儒, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留田柔,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,636評(píng)論 2 355
  • 正文 我出身青樓骨望,卻偏偏與公主長(zhǎng)得像凯楔,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子锦募,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評(píng)論 2 344

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