49生成器
閉包/全局變量讓函數(shù)在退出后還能保留狀態(tài)全局變量污染空間 閉包較復(fù)雜 選生成器
定義:在函數(shù)中用yield表達(dá)式來代替函數(shù)中return語句
實(shí)現(xiàn)生成器的另一種方法:直接使用生成器表達(dá)式
For語句功能:每次在可迭代對(duì)象中獲取一個(gè)數(shù)據(jù)
(Counter)生成器不像列表元組等可迭代對(duì)象,而看作是制作機(jī)器作用即每次調(diào)用時(shí)提供一個(gè)數(shù)據(jù),并且會(huì)記住當(dāng)時(shí)的狀態(tài),而列表元組這些則是容器,存放早已備好的所有數(shù)據(jù)
生成器可以看作是一種特殊的迭代器 首先不走回頭路 第二支持next()函數(shù)
生成器每調(diào)用一次獲取一結(jié)果的特性,使生成器對(duì)象無法使用下標(biāo)索引這種隨機(jī)訪問的方式
生成器表達(dá)式:利用推導(dǎo)的形式獲得生成器的方法
與生成器特性不同,列表推導(dǎo)式會(huì)一下將所有的數(shù)據(jù)生產(chǎn)出來并放到列表中
分別用閉包、生成器 來求斐波那契數(shù)列
由于函數(shù)中沒有設(shè)置結(jié)束條件 用for語句迭代他直到強(qiáng)制退出
50遞歸:函數(shù)調(diào)用自身的過程
函數(shù)之間是可以相互調(diào)用的
要讓遞歸正常工作,必須要有一個(gè)結(jié)束條件,并且每次調(diào)用都會(huì)向著該結(jié)束條件推進(jìn)
用迭代和遞歸來實(shí)現(xiàn)同一個(gè)任務(wù):
求一個(gè)數(shù)的階乘?
定義一個(gè)遞歸函數(shù),參數(shù)就是每次要運(yùn)算的這個(gè)數(shù)值,接著讓參數(shù)每次調(diào)用時(shí)都遞減一下
斐波那契數(shù)列
遞歸存在效率問題,每一次調(diào)用遞歸函數(shù) 它并不會(huì)立刻返回,而是要等到最底層的那個(gè)函數(shù)返回,再一層一層往上走
迭代就是一瞬間的事