2018-08-31函數(shù)

函數(shù)就是一種特殊的類型。聲明函數(shù)的時(shí)候勃救,其實(shí)就是聲明一個(gè)類型為function的變量迂尝,所以變量能做的事情,函數(shù)都能做剪芥。
一、回調(diào)函數(shù)

1琴许、函數(shù)作為函數(shù)的參數(shù)

ef clean_floor(time):
    print('%s,做地板清潔服務(wù)'%time)
    print('收費(fèi)100')
    return 100
def clean_kitchen(time):
    print('%s,做廚房清潔服務(wù)'%time)
    print('收費(fèi)200')
    return 200
def call_service(time:str,service):
    service(time)

#將函數(shù)作為參數(shù)税肪,傳給其他函數(shù)
call_service('上午十點(diǎn)',clean_floor)
call_service('下午五點(diǎn)',clean_kitchen)

結(jié)果:
上午十點(diǎn),做地板清潔服務(wù)
收費(fèi)100
下午五點(diǎn),做廚房清潔服務(wù)
收費(fèi)200

2、函數(shù)作為函數(shù)的返回值

def operation(operator:str):
    if operator == '+':
        def my_sum(*nums):
            sum = 0
            for num in nums:
                sum += num
            print(sum)
    elif operator == '*':
        def my_sum(*nums):
            sum1 = 1
            for num in nums:
                sum1 *= num
            print(sum1)

        #將函數(shù)返回
    return my_sum    #返回內(nèi)部函數(shù)作為外部函數(shù)的返回值

operation('+')(1,2)
operation('*')(2,3,4)

結(jié)果:
3
24

二榜田、生成器和迭代器

生成器就是來生成迭代器益兄,可以把迭代器看成一個(gè)容器,類似列表箭券。
生成式--產(chǎn)生一個(gè)迭代器的表達(dá)式(下面等號(hào)右邊的式子)

通過將生成式產(chǎn)生的迭代器轉(zhuǎn)換成了一個(gè)列表

a = (x for x in range(10))
說明:把等號(hào)右邊全部保存給 a 净捅,每次調(diào)用next(a)取一個(gè)值,并且保存已經(jīng)調(diào)用的位置辩块,下次調(diào)用next(a)時(shí)繼續(xù)調(diào)用后面的值蛔六。

生成器和迭代器都是通過 next()來獲取里面的數(shù)據(jù)荆永。不管通過什么方式取出數(shù)據(jù),取出數(shù)據(jù)的位置不會(huì)返回国章。
print(next(a))

1具钥、把生成式的結(jié)果轉(zhuǎn)換成一個(gè)列表([生成式]):

a = [x for x in range(10)]
print(a)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
2、把生成式的結(jié)果轉(zhuǎn)換成一個(gè)字典:

條件:生成式生成的結(jié)果是一個(gè)元組液兽,并且元組的元素個(gè)數(shù)必須是 2

dict1 = dict((x,x*2) for x in range(10))
print(dict1)
{0: 0, 1: 2, 2: 4, 3: 6, 4: 8, 5: 10, 6: 12, 7: 14, 8: 16, 9: 18}
#用生成式交換字典key和value
dict1 = dict((value,key) for key,value in {'a':1,'b':2}.items())
print(dict1)
{1: 'a', 2: 'b'}

三骂删、生成器

yield 關(guān)鍵字

只要函數(shù)中有 yield 關(guān)鍵字,不管執(zhí)行yield語(yǔ)句與否四啰,這個(gè)函數(shù)都會(huì)變成一個(gè)生成器宁玫。
a、有 yield 的函數(shù)柑晒,在調(diào)用函數(shù)的時(shí)候不再是獲取返回值欧瘪,而是產(chǎn)生一個(gè)生成器對(duì)象,生成器對(duì)象中保留的是函數(shù)體敦迄。
b恋追、當(dāng)通過 next 獲取生成器中的數(shù)據(jù)的時(shí)候,才會(huì)去執(zhí)行函數(shù)體罚屋,執(zhí)行到 yield 為止苦囱,并且將 yiled 后面的結(jié)果作為生成的數(shù)據(jù)返回,同時(shí)記錄結(jié)束的位置脾猛,下次再調(diào)用 next 的時(shí)候撕彤,從上次結(jié)束的位置接著往后執(zhí)行。

練習(xí):寫一個(gè)生成器猛拴,可以產(chǎn)生一個(gè)斐波那契數(shù)列

# 練習(xí):
def fib():
    yield 1
    yield 1
    x = 1
    y = 1
    while True:
            x,y = x+y,x
            yield x
n = fib()   #必須保存一下羹铅,不然直接next會(huì)產(chǎn)生多個(gè)生成器,每次取第一個(gè)值愉昆,結(jié)果全為 1 
print(next(n),end=' ')
print(next(n),end=' ')
print(next(n),end=' ')
print(next(n),end=' ')
print(next(n),end=' ')
print(next(n),end=' ')
結(jié)果:
1 1 2 3 5 8 

四职员、迭代器 -- iter

生成器和生成式產(chǎn)生的對(duì)象就是迭代器。
將列表轉(zhuǎn)換成迭代器對(duì)象

iter1 = iter([1, 2, 3, 4])
print(iter1)
print(next(iter1))
print(next(iter1))
print(next(iter1))
1
2
3
利用 iter 把其他類型轉(zhuǎn)換成迭代器跛溉,取出時(shí)候都是用 next 取出焊切,和生成器一樣,只是產(chǎn)生方式不同芳室。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末专肪,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子堪侯,更是在濱河造成了極大的恐慌嚎尤,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,826評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件伍宦,死亡現(xiàn)場(chǎng)離奇詭異芽死,居然都是意外死亡乏梁,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門收奔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來掌呜,“玉大人,你說我怎么就攤上這事坪哄≈式叮” “怎么了?”我有些...
    開封第一講書人閱讀 164,234評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵翩肌,是天一觀的道長(zhǎng)模暗。 經(jīng)常有香客問我,道長(zhǎng)念祭,這世上最難降的妖魔是什么兑宇? 我笑而不...
    開封第一講書人閱讀 58,562評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮粱坤,結(jié)果婚禮上隶糕,老公的妹妹穿的比我還像新娘。我一直安慰自己站玄,他們只是感情好枚驻,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評(píng)論 6 392
  • 文/花漫 我一把揭開白布惯豆。 她就那樣靜靜地躺著痹兜,像睡著了一般。 火紅的嫁衣襯著肌膚如雪付秕。 梳的紋絲不亂的頭發(fā)上晾剖,一...
    開封第一講書人閱讀 51,482評(píng)論 1 302
  • 那天锉矢,我揣著相機(jī)與錄音,去河邊找鬼齿尽。 笑死沽损,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的循头。 我是一名探鬼主播绵估,決...
    沈念sama閱讀 40,271評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼贷岸!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起磷雇,我...
    開封第一講書人閱讀 39,166評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤偿警,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后唯笙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體螟蒸,經(jīng)...
    沈念sama閱讀 45,608評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡盒使,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了七嫌。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片少办。...
    茶點(diǎn)故事閱讀 39,926評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖诵原,靈堂內(nèi)的尸體忽然破棺而出英妓,到底是詐尸還是另有隱情,我是刑警寧澤绍赛,帶...
    沈念sama閱讀 35,644評(píng)論 5 346
  • 正文 年R本政府宣布蔓纠,位于F島的核電站,受9級(jí)特大地震影響吗蚌,放射性物質(zhì)發(fā)生泄漏腿倚。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評(píng)論 3 329
  • 文/蒙蒙 一蚯妇、第九天 我趴在偏房一處隱蔽的房頂上張望敷燎。 院中可真熱鬧,春花似錦箩言、人聲如沸硬贯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)澄成。三九已至,卻和暖如春畏吓,著一層夾襖步出監(jiān)牢的瞬間墨状,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工菲饼, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留肾砂,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,063評(píng)論 3 370
  • 正文 我出身青樓宏悦,卻偏偏與公主長(zhǎng)得像镐确,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子饼煞,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評(píng)論 2 354

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

  • 你不知道JS:異步 第四章:生成器(Generators) 在第二章源葫,我們明確了采用回調(diào)表示異步流的兩個(gè)關(guān)鍵缺點(diǎn):...
    purple_force閱讀 957評(píng)論 0 2
  • 本文翻譯自Functional Programming Howto 本文將介紹Python中函數(shù)式編程的特性。在對(duì)...
    大蟒傳奇閱讀 2,615評(píng)論 4 14
  • 如圖所示一場(chǎng)大咖云集的高峰論壇砖瞧,其實(shí)也就各位企業(yè)資深高管息堂,在各自垂直行業(yè)里各有所建樹,討論一下如何利用好平臺(tái)來做好...
    喜珞閱讀 204評(píng)論 0 3
  • 作者:毛志杰 相信很多父母都曾經(jīng)尷尬地面對(duì)或孩子 “我從哪里來振坚?”這樣即幼稚又充滿哲理的問題薇搁。 但是,估計(jì)很多父母...
    毛哥說教育閱讀 448評(píng)論 0 1
  • 一天很短渡八,短得來不及擁抱清晨啃洋,就已經(jīng)手握黃昏!一年很短呀狼,短得來不及細(xì)品初春殷紅竇綠裂允,就要打點(diǎn)素裹秋霜! 一生很短哥艇,...
    海底森林閱讀 200評(píng)論 1 1