day11-總結(jié)

1.函數(shù)調(diào)用表達(dá)式:調(diào)用函數(shù)的語(yǔ)句

普通值能做的事情函數(shù)調(diào)用表達(dá)式都能做

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

!python中聲明函數(shù)的本質(zhì)就是聲明一個(gè)類型是function的變量绳军,函數(shù)就是變量名
變量能做的事情函數(shù)都可以做暗膜;變量可以作為函數(shù)的參數(shù)
一個(gè)函數(shù)可以作為另外一個(gè)函數(shù)的參數(shù)匀奏,如果一個(gè)函數(shù)的參數(shù)也是函數(shù),那么這種函數(shù)叫實(shí)參高階函數(shù)

3實(shí)參高階函數(shù)應(yīng)用:

列表.sort(),sorted(),max(),min()

(1)sort和sorted
這兩個(gè)函數(shù)是實(shí)參高階函數(shù)学搜,里面有個(gè)參數(shù)key要求傳一個(gè)函數(shù)
key參數(shù)對(duì)應(yīng)的函數(shù)是用來(lái)決定排序規(guī)則:函數(shù)需要一個(gè)參數(shù)和一個(gè)返回值娃善,它的參數(shù)代表需要排序序列的元素,返回值是比較對(duì)象

4變量作為函數(shù)的返回值

一個(gè)函數(shù)的返回值也是一個(gè)函數(shù)瑞佩,那么這個(gè)函數(shù)就是返回值高階函數(shù)

5.什么是迭代器(iter)

迭代器是容器型數(shù)據(jù)類型(序列)聚磺,可變(不支持增刪改),有序(不支持下標(biāo)操作) 所有的數(shù)據(jù)都可以轉(zhuǎn)換成迭代器
保存在迭代器中的元素炬丸,只能取瘫寝,并且取出后迭代器中就不再保存,也不可以再往迭代器中添加元素

迭代器沒(méi)有對(duì)應(yīng)的格式的數(shù)據(jù)稠炬,迭代器只能是通過(guò)將其他的序列轉(zhuǎn)換成迭代器焕阿,或者是生成器

iter1 = iter([19, 29, 49])
print(iter1)  # <list_iterator object at 0x000000000281B048>

6.獲取迭代器中的元素(不管用什么方式去獲取迭代器中的元素,獲取一個(gè)就會(huì)少一個(gè))

(1)獲取單個(gè)元素:next(迭代器) -- 獲取迭代器頂部的元素(最上層/第一個(gè))

iter2 = iter('hello')
print(next(iter2))  # h
print(next(iter2))  # e

(2)遍歷

iter2 = iter('abc123')
for x in iter2:
    print('***', x)

7.什么是生成器

生成器就是迭代器 --- 獲取元素和迭代器一樣(只能一個(gè)一個(gè)的取首启,少一個(gè)少一個(gè))
調(diào)用函數(shù)體中有yield關(guān)鍵字的函數(shù)暮屡,就可以得到一個(gè)生成器

8.yield

yield只能出現(xiàn)在函數(shù)體中
調(diào)用有yield關(guān)鍵字的函數(shù),不會(huì)執(zhí)行函數(shù)體毅桃,也不會(huì)獲取返回值褒纲,而是得到一個(gè)生成器

9.生成器怎么產(chǎn)生數(shù)據(jù)

看一個(gè)生成器能夠產(chǎn)生幾個(gè)數(shù)據(jù)愁溜,看執(zhí)行完生成器對(duì)應(yīng)的函數(shù)會(huì)遇到幾次yield;yield后面的值就是生成器能產(chǎn)生的數(shù)據(jù)



def func2():
    for x in range(10):
        yield x


gen1 = func2()
print(gen1)
print(next(gen1))
for x in gen1:
    print('===:', x)

10.生成器生成數(shù)據(jù)的原理

生成器不會(huì)同時(shí)將所有的元素保存起來(lái)外厂,而是需要數(shù)據(jù)的時(shí)候臨時(shí)去產(chǎn)生數(shù)據(jù)
每次獲取生成器元素的時(shí)候,就去執(zhí)行生成器對(duì)應(yīng)的函數(shù)的函數(shù)體代承,從前往后執(zhí)行汁蝶,
直到遇到y(tǒng)ield為止,并且將yield后面的值作為結(jié)果论悴;同時(shí)保存結(jié)束位置掖棉;
下次獲取下一個(gè)元素的時(shí)候,接著上次結(jié)束的位置往后執(zhí)行膀估,直到遇到下一個(gè)yield幔亥;以此類推
如果執(zhí)行到函數(shù)結(jié)束都沒(méi)有遇到y(tǒng)ield,next函數(shù)會(huì)報(bào)StopIteration錯(cuò)誤


def func3():
    print('======第1個(gè)數(shù)據(jù)======')
    yield 1
    print('======第2個(gè)數(shù)據(jù)======')
    yield 2
    print('======第3個(gè)數(shù)據(jù)======')
    yield 3


gen2 = func3()
print(next(gen2))
print('開(kāi)始取第2個(gè)數(shù)據(jù)')
print(next(gen2))
print('開(kāi)始取第3個(gè)數(shù)據(jù)')
print(next(gen2))

# 寫一個(gè)產(chǎn)生學(xué)號(hào)的生成器
def creat_id():
    num = 1
    while True:
        yield 'stu' + str(num)
        num += 1


num = creat_id()
print(next(num))
print(next(num))
print(next(num))
for _ in range(20):
    print(next(num))

11.什么是生成式:

生成式本質(zhì)就是生成器

(1)語(yǔ)法1:
(表達(dá)式 for 變量 in 序列) - 創(chuàng)建一個(gè)生成器

展開(kāi)成生成器:
def func1():
for 變量 in 序列:
yield 表達(dá)式

[表達(dá)式 for 變量 in 序列] -- 將生成式對(duì)應(yīng)的生成器轉(zhuǎn)換成列表

(2)語(yǔ)法2:
(for 變量 in 序列 if 條件語(yǔ)句) -- 創(chuàng)建一個(gè)生成器

展開(kāi)成生成器:
def func1():
for 變量 in 序列:
if 條件語(yǔ)句:
yield 表達(dá)式

gen1 = (x*2 for x in range(10))
print(next(gen1))
print(next(gen1))
list1 = list(gen1)
print(list1)  # [4, 6, 8, 10, 12, 14, 16, 18]
# print(next(gen1))  # StopIteration


list2 = [x*x for x in range(1, 10)]
print(list2)  # [1, 4, 9, 16, 25, 36, 49, 64, 81]

list3 = list(x*x for x in range(1, 10))
print(list3)  # [1, 4, 9, 16, 25, 36, 49, 64, 81]


dict1 = dict((x, x*2) for x in range(5))
print(dict1)  # {0: 0, 1: 2, 2: 4, 3: 6, 4: 8}


list4 = [x for x in range(10) if x % 2]
print(list4)

list5 = ['%d*2=%d' % (x, x*2) for x in range(5)]
print(list5)

print('===============')
# 展開(kāi)成生成器


def func3():
    for x in range(5):
        yield '%d*2=%d' % (x, x*2)


gen1 = func3()
list1 = list(gen1)
print(list1)

12.什么是模塊:一個(gè)py文件就是一個(gè)模塊

13.多模塊怎么協(xié)作:導(dǎo)入模塊

(1)import 模塊名 --- 在當(dāng)前的模塊中導(dǎo)入指定模塊察纯,導(dǎo)入后可以使用指定模塊中的所有的全局變量
以'模塊名.變量'的方式去使用

(2)from 模塊名 import 全局變量1帕棉,全局變量2,....
---- 導(dǎo)入指定模塊中指定的全局變量饼记;被導(dǎo)入的全局變量在當(dāng)前模塊中直接使用

(3)重命名
import 模塊名 as 新模塊名 -- 模塊重命名香伴,通過(guò)新模塊名去使用模塊
from 模塊名 import 變量1 as 新變量1,變量2 as 新變量2具则,....
-----變量重命名即纲,通過(guò)新變量去使用變量

(4)通配符
from 模塊名 import * --- 導(dǎo)入模塊中所有的全局變量,使用的時(shí)候直接用

14.導(dǎo)入模塊的原理

當(dāng)執(zhí)行導(dǎo)入模塊的代碼的時(shí)候博肋,實(shí)質(zhì)會(huì)執(zhí)行被導(dǎo)入的指定模塊對(duì)應(yīng)的py文件

將不希望被別的模塊執(zhí)行的代碼放到下面的if語(yǔ)句中:
if __ name __ == ' __ main __':

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末低斋,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子匪凡,更是在濱河造成了極大的恐慌膊畴,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,252評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件病游,死亡現(xiàn)場(chǎng)離奇詭異巴比,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)礁遵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門轻绞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人佣耐,你說(shuō)我怎么就攤上這事政勃。” “怎么了兼砖?”我有些...
    開(kāi)封第一講書人閱讀 168,814評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵奸远,是天一觀的道長(zhǎng)既棺。 經(jīng)常有香客問(wèn)我,道長(zhǎng)懒叛,這世上最難降的妖魔是什么丸冕? 我笑而不...
    開(kāi)封第一講書人閱讀 59,869評(píng)論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮薛窥,結(jié)果婚禮上胖烛,老公的妹妹穿的比我還像新娘。我一直安慰自己诅迷,他們只是感情好佩番,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,888評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著罢杉,像睡著了一般趟畏。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上滩租,一...
    開(kāi)封第一講書人閱讀 52,475評(píng)論 1 312
  • 那天赋秀,我揣著相機(jī)與錄音,去河邊找鬼律想。 笑死沃琅,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蜘欲。 我是一名探鬼主播益眉,決...
    沈念sama閱讀 41,010評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼姥份!你這毒婦竟也來(lái)了郭脂?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 39,924評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤澈歉,失蹤者是張志新(化名)和其女友劉穎展鸡,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體埃难,經(jīng)...
    沈念sama閱讀 46,469評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡莹弊,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,552評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了涡尘。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片忍弛。...
    茶點(diǎn)故事閱讀 40,680評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖考抄,靈堂內(nèi)的尸體忽然破棺而出细疚,到底是詐尸還是另有隱情,我是刑警寧澤川梅,帶...
    沈念sama閱讀 36,362評(píng)論 5 351
  • 正文 年R本政府宣布疯兼,位于F島的核電站然遏,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏吧彪。R本人自食惡果不足惜待侵,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,037評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望姨裸。 院中可真熱鬧秧倾,春花似錦、人聲如沸啦扬。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,519評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)扑毡。三九已至,卻和暖如春盛险,著一層夾襖步出監(jiān)牢的瞬間瞄摊,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,621評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工苦掘, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留换帜,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,099評(píng)論 3 378
  • 正文 我出身青樓鹤啡,卻偏偏與公主長(zhǎng)得像惯驼,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子递瑰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,691評(píng)論 2 361

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

  • 遞歸函數(shù) 1.什么是遞歸?在函數(shù)中調(diào)用本身的函數(shù)被稱為遞歸函數(shù) 2.遞歸的作用:循環(huán)可以做的事情遞歸函數(shù)都可以做祟牲,...
    xue_y閱讀 142評(píng)論 0 0
  • 文件的操作 1.模塊的使用 1.導(dǎo)入模塊Python中一個(gè)py文件就是一個(gè)模塊,可以通過(guò)import或者form-...
    hfudhu閱讀 215評(píng)論 0 0
  • 01.recode 1.容器類數(shù)據(jù)類型 a.列表:可變抖部,有序b.元祖:x, y = 12, 100; x, *n...
    Gary134閱讀 227評(píng)論 0 0
  • 1.生成式 格式1: - 結(jié)果是一個(gè)生成器(迭代器)表達(dá)式 for 變量 in 序列--> 展開(kāi):def func...
    312d026ea2dd閱讀 157評(píng)論 0 0
  • 1.函數(shù)作為變量python中聲明函數(shù)其實(shí)就是聲明一個(gè)類型是function的變量说贝,函數(shù)名就是變量名普通變量能做的...
    默默卡閱讀 97評(píng)論 0 0