匿名函數(shù)
匿名函數(shù)就是沒(méi)有函數(shù)名的函數(shù);匿名函數(shù)可以看成是類(lèi)型是function
1)語(yǔ)法
注意:匿名函數(shù)本質(zhì)還是函數(shù),函數(shù)除了聲明語(yǔ)法以外其他的都是適用匿名函數(shù)
lambda 參數(shù)列表:返回值
2)說(shuō)明
lambda - 關(guān)鍵字
函數(shù)名 - 參數(shù)列表 - 參數(shù)名1命迈,參數(shù)名2识樱,...
: - 固定
返回值 - 任何有結(jié)果的表達(dá)式;它就是匿名函數(shù)的函數(shù)體猴贰,相當(dāng)于普通函數(shù)中的return語(yǔ)句
調(diào)用匿名函數(shù):保存匿名函數(shù)值的變量(實(shí)參列表)
3)參數(shù)
普通函數(shù)中除了用‘參數(shù)名:類(lèi)型名’的形式來(lái)指定參數(shù)類(lèi)型以外对雪,其他的語(yǔ)法匿名函數(shù)都支持
變量作用域
1.變量的作用域
變量在程序中能夠使用的范圍
2.全局變量和局部變量
1)全局變量:沒(méi)有生命在函數(shù)里面或者類(lèi)里面的變量就是全局變量;作用域是從聲明開(kāi)始大文件結(jié)束的任何位置
2)局部變量:聲明在函數(shù)中的變量就是局部變量(函數(shù)的參數(shù)相當(dāng)于聲明在函數(shù)中的變量)米绕;作用域是從聲明開(kāi)始到函數(shù)結(jié)束的任何位置
3)函數(shù)調(diào)用過(guò)程(內(nèi)存):壓棧
當(dāng)調(diào)用函數(shù)的時(shí)候瑟捣,系統(tǒng)會(huì)自動(dòng)在內(nèi)存的棧區(qū)間為這個(gè)函數(shù)開(kāi)辟一個(gè)獨(dú)立的內(nèi)存區(qū)間馋艺,
用來(lái)保存在函數(shù)中聲明的變量。當(dāng)函數(shù)調(diào)用結(jié)束這個(gè)內(nèi)存區(qū)域會(huì)自動(dòng)釋放迈套。
3.global和nonlocal
global和nonlocal是函數(shù)中的關(guān)鍵字和return一樣只能在函數(shù)體中使用
1)global - 在函數(shù)中聲明一個(gè)全局變量
global 變量名
變量 = 值
2)nonlocal:在局部的局部中去修改局部變量的值
遞歸函數(shù)
1.什么是遞歸函數(shù)
自己調(diào)自己的函數(shù)(函數(shù)體中調(diào)用當(dāng)前函數(shù))
循環(huán)能做的事情捐祠,遞歸都可以做
2.怎么寫(xiě)遞歸函數(shù)
第一步:找臨界值(循環(huán)結(jié)束的條件),在這需要結(jié)束函數(shù)
第二步:找關(guān)系 - 找f(n)和f(n-1)的關(guān)系(找當(dāng)次循環(huán)和上次循環(huán)的關(guān)系)
第三步:假設(shè)函數(shù)的功能已經(jīng)實(shí)現(xiàn)桑李,根據(jù)關(guān)系用f(n-1)去實(shí)現(xiàn)f(n)的功能
迭代器
1.迭代器(iter)
迭代器作為容器可以保存多個(gè)數(shù)據(jù)踱蛀;數(shù)據(jù)的來(lái)源:1)將其他序列轉(zhuǎn)換成迭代器 2)生成器
1)將其他的序列轉(zhuǎn)換成迭代器
2.獲取元素
不管用哪種方式獲取了元素的值,那么這個(gè)元素在迭代器中就不存在了贵白,如果迭代器為空率拒,用next獲取元素時(shí)就會(huì)報(bào)錯(cuò)
1)獲取單個(gè)元素:next(迭代器)、迭代器.next() -> 獲取迭代器中的第一個(gè)元素
2)遍歷
for 變量 in 迭代器:
生成器
1.什么是生成器
1)生成器就是迭代器中的一種
2)調(diào)用一個(gè)帶有yield關(guān)鍵字的函數(shù)就可以得到一個(gè)生成器
如果一個(gè)函數(shù)中有yield關(guān)鍵字:
a.調(diào)用函數(shù)不會(huì)執(zhí)行函數(shù)體
b.函數(shù)調(diào)用表達(dá)式的值不是函數(shù)的返回值禁荒,而是生成器對(duì)象