day11總結(jié)

聲明函數(shù)就是聲明變量

1.函數(shù)作為變量

python中聲明函數(shù)其實(shí)就是聲明一個(gè)類型是function的變量怪蔑,函數(shù)名就是變量名
所以普通變量能做的事情都可以做

def func1():
return 100

2.一個(gè)變量能給另一個(gè)變量賦值

c = func1
c()
func1 = 12.5
print(func1()) # 不能再調(diào)用巍佑,存儲(chǔ)的內(nèi)容是12.5

3.一個(gè)變量可以作為容器的元素

def func2():
return 100

print(type(func2))

練習(xí):list20, list21, list22
list2 = []
for i in range(5):
def func(n):
return i * 2
list2.append(func)

i = 0, 1, 2, 3, 4,
list2 = [func, func, func, func, func]
list20 = func(3) = 8, list21 = 8, list22 = 8

print(list20)
print(list21)
print(list22)

4. 變量可以作為函數(shù)的參數(shù)

(函數(shù)作為函數(shù)的參數(shù))-> 實(shí)參高階函數(shù)

def func4(n):
return n * 2

a = 10
將變量作為函數(shù)的參數(shù)
func4(a)

all_student = [
{'name': '海綿寶寶', 'age': 17, 'score': 90},
{'name': '喜羊羊', 'age': 17, 'score': 90},
{'name': '懶羊羊', 'age': 17, 'score': 90},
{'name': '美羊羊', 'age': 17, 'score': 90}
]

!!!應(yīng)用:sort函數(shù)的高級(jí)使用

sort(key=function, reverse=bool) key要求傳一個(gè)函數(shù)罗晕,并且函數(shù)有一個(gè)參數(shù)和一個(gè)返回值 參數(shù)就是序列中的元素顶籽,返回值就是排序比較的對象

all_student.sort(key=lambda item: item['age'])
print(all_student)

all_message = [
('st', 'python1902004'),
('as', 'python1902100'),
('aq', 'python1902023')

]

all_message.sort(key=lambda item: item[1], reverse=True)
print(all_message)

all_message.sort(key=lambda item: item[1][-1])
print(all_message)

5. 函數(shù)作為返回值

將一個(gè)函數(shù)作為函數(shù)的返回值(返回值高階函數(shù))
def func1():
def temp(*nums):
return sum(nums)
return temp

print(func1()(1, 3, 5, 9))

1.什么是迭代器(iter)

是容器型數(shù)據(jù)類型(可以同時(shí)存儲(chǔ)多個(gè)數(shù)據(jù)),但是想要獲取或者查看迭代器中的元素的值谋减,只能將元素取出來激蹲,
取出來的元素在迭代器中就不存在了,取的時(shí)候只能從前往后一個(gè)一個(gè)的取叁温,不能跳著取

2. 元素

迭代器中的元素只能通過類型轉(zhuǎn)換再悼,將其他容器轉(zhuǎn)換成迭代器;或者通過生成器去生成

  1. 轉(zhuǎn)換- 所有序列都可以轉(zhuǎn)換成迭代器膝但。 迭代器中的元素可以是任何類型的數(shù)據(jù)
    iter1 = iter([1, 23, [45, 34]])
    print(iter1)
    iter2 = iter({'a': 1})
    print(iter2)

3.迭代器獲取元素 -- 不管以什么方式獲取冲九,獲取后這個(gè)數(shù)據(jù)在迭代器中就不存在了

1) next(迭代器) -- 獲取迭代器頂部數(shù)據(jù)
iter3 = iter('hello')
print(next(iter3))
print(next(iter3))
print(next(iter3))
print(next(iter3))
print(next(iter3))
print(next(iter3)) # StopIteration -- StopIteration 異常用于標(biāo)識(shí)迭代的完成,防止出現(xiàn)無限循環(huán)的情況

  1. 遍歷獲取每個(gè)元素
    iter3 = iter('hello')
    for x in iter3:
    print('x:', x)

if 'e' in iter3:
print(True)

1.什么是生成器

生成器就是迭代器, 迭代器不一定是生成器
調(diào)用一個(gè)帶有yield關(guān)鍵字的函數(shù)就能得到一個(gè)生成器 -- yield只能出現(xiàn)在函數(shù)體

def func1():
print('=====')
return 100
yield

gen1 = func1()

2. 生成器的元素

生成器獲取元素的方式和迭代器一樣:next() 和循環(huán)遍歷
1)生成器元素的個(gè)數(shù):看執(zhí)行完生成器對應(yīng)的函數(shù)會(huì)遇到幾次yield

  1. 元素的值:看yield后表達(dá)式的值

def func2():
print('====================')
for x in range(10):
yield 100

gen3 = func2()
print('next:', next(gen3))

3.生成器產(chǎn)生數(shù)據(jù)的原理:

當(dāng)獲取生成器的元素的時(shí)候莺奸,會(huì)執(zhí)行生成器對應(yīng)的函數(shù)丑孩,從開始執(zhí)行到y(tǒng)ield為止,
并且將yield后面的數(shù)據(jù)作為元素返回并且記錄結(jié)束位置灭贷;
下次獲取元素的時(shí)候温学,從上次結(jié)束的位置接著往后執(zhí)行,直到遇到y(tǒng)ield為止甚疟,將yield后面的數(shù)據(jù)作為元素返回并記錄位置
以此類推仗岖,如果從執(zhí)行開始執(zhí)行到函數(shù)結(jié)束,沒有遇到y(tǒng)ield览妖,那么久獲取不到元素
"""

能夠產(chǎn)生無限數(shù)字的生成器

def func6():
num = 0
while True:
yield num
num += 1

gen6 = func6()

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末轧拄,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子讽膏,更是在濱河造成了極大的恐慌檩电,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,525評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件府树,死亡現(xiàn)場離奇詭異俐末,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)奄侠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評論 3 395
  • 文/潘曉璐 我一進(jìn)店門鹅搪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人遭铺,你說我怎么就攤上這事』肿迹” “怎么了魂挂?”我有些...
    開封第一講書人閱讀 164,862評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長馁筐。 經(jīng)常有香客問我涂召,道長,這世上最難降的妖魔是什么敏沉? 我笑而不...
    開封第一講書人閱讀 58,728評論 1 294
  • 正文 為了忘掉前任果正,我火速辦了婚禮,結(jié)果婚禮上盟迟,老公的妹妹穿的比我還像新娘秋泳。我一直安慰自己,他們只是感情好攒菠,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,743評論 6 392
  • 文/花漫 我一把揭開白布迫皱。 她就那樣靜靜地躺著,像睡著了一般辖众。 火紅的嫁衣襯著肌膚如雪卓起。 梳的紋絲不亂的頭發(fā)上和敬,一...
    開封第一講書人閱讀 51,590評論 1 305
  • 那天,我揣著相機(jī)與錄音戏阅,去河邊找鬼昼弟。 笑死,一個(gè)胖子當(dāng)著我的面吹牛奕筐,可吹牛的內(nèi)容都是我干的舱痘。 我是一名探鬼主播,決...
    沈念sama閱讀 40,330評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼救欧,長吁一口氣:“原來是場噩夢啊……” “哼衰粹!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起笆怠,我...
    開封第一講書人閱讀 39,244評論 0 276
  • 序言:老撾萬榮一對情侶失蹤铝耻,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后蹬刷,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瓢捉,經(jīng)...
    沈念sama閱讀 45,693評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,885評論 3 336
  • 正文 我和宋清朗相戀三年办成,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了泡态。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,001評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡迂卢,死狀恐怖某弦,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情而克,我是刑警寧澤靶壮,帶...
    沈念sama閱讀 35,723評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站员萍,受9級(jí)特大地震影響腾降,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜碎绎,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,343評論 3 330
  • 文/蒙蒙 一螃壤、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧筋帖,春花似錦奸晴、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春辕录,著一層夾襖步出監(jiān)牢的瞬間睦霎,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評論 1 270
  • 我被黑心中介騙來泰國打工走诞, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留副女,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,191評論 3 370
  • 正文 我出身青樓蚣旱,卻偏偏與公主長得像碑幅,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子塞绿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,955評論 2 355

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

  • 寫在前面的話 代碼中的# > 表示的是輸出結(jié)果 輸入 使用input()函數(shù) 用法 注意input函數(shù)輸出的均是字...
    FlyingLittlePG閱讀 2,758評論 0 8
  • 一沟涨、recode 1.匿名函數(shù) 函數(shù)名 = lambda 參數(shù)列表:返回值參數(shù)列表: 變量名1,變量名2 函數(shù)體是...
    大漠判官1閱讀 213評論 0 0
  • DAY11 1.容器型數(shù)據(jù)類型:列表异吻、元組裹赴、字典、集合列表:[元素1,元素2...]诀浪,可變棋返,有序,增刪改查操作:+...
    664a159048ed閱讀 194評論 0 0
  • 1.生成式 格式1: - 結(jié)果是一個(gè)生成器(迭代器)表達(dá)式 for 變量 in 序列--> 展開:def func...
    312d026ea2dd閱讀 156評論 0 0
  • 有些人愛說話抬杠雷猪,并津津樂道睛竣。如果你會(huì)生氣,先看個(gè)故事吧求摇! 三季人的故事 有一天孔子的學(xué)生在門外掃地射沟,來了一位客人...
    輕松生活_a30e閱讀 613評論 2 2