看文字的話會很亂,和圖一起看會好一點
目前創(chuàng)新互聯(lián)建站已為千余家的企業(yè)提供了網(wǎng)站建設、域名、網(wǎng)站空間、網(wǎng)站托管、服務器租用、企業(yè)網(wǎng)站設計、津南網(wǎng)站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
首先,it是個生成器(_odd_iter),并使n=3,隨后,it作為一個生成器存在于filter對象中(迭代器),并使it為一個filter對象,經(jīng)過循環(huán),到達next語句,先計算it _odd_iter(生成器),生成了新的數(shù)之后,開始計算filter。第一次循環(huán)的時候第18行的代碼相當于 it = filter(_not_divisible(3), it ),等號右面的it還在等待next調(diào)用生成值,生成值之后,就將它代入為lambda的x中……第二次循環(huán)的時候第18行代碼變成 it = filter(_not_divisible(5), filter(_not_divisible(3), it ) ),同樣等號右面的it仍然在等待next調(diào)用生成新的值
我剛看這個教程,不知道對不對。。。
對了我看見有一個人問把代碼第18行改成 it = filter(lambda x: x % n 0, it)
會失去過濾功能,我覺得,lambda是一個臨時函數(shù),所以覺得像filter(div(5), filter(div(3), it))這種存在多個lambda臨時函數(shù)的話是很奇怪的,
在調(diào)試時,發(fā)現(xiàn)filter只檢測了一個n(最近被賦值的),相當于7%5,9%7這樣,因此失去過濾素數(shù)功能。模擬一下,在將要輸出5的時候,it = filter()的那行代碼變?yōu)椋?/p>
it = filter(lambda x : x % n 0 , filter (lambda x : x % n 0 , it ) ),it將值賦給x,但是,我覺得n被賦值時,會刷新其他lambda中的n,造成類似于 it =?filter(lambda x : x % 5 0 , filter (lambda x : x % 5 0 , it ) )的情況
lambda或者高階函數(shù)是一種設計模式,是否適合應該要看更大范圍的設計需要。
脫離了需求場景,返回lambda根本是脫褲子放屁。
題主貼了兩遍函數(shù),似乎是一樣的,下面就分析這一個版本:
def?add_end(L=None):
if?L?is?None:
L?=?[]
L.append('END')
return?L
不明白題主說的“一直往里面加END”是怎么回事。函數(shù)里既沒有循環(huán)也沒有遞歸,怎么會“一直”加。。。
關于默認參數(shù),其作用是:使?add_end()的返回值 與?add_end(None)的返回值相同。因此下面不再單獨分析輸入0個參數(shù)的情形。
“return的L是全局變量,而傳入的參數(shù)L是局部變量”這個說法很奇怪。當傳入的L是None時,該函數(shù)的會新生成一個list,向其中加入一個字符串‘END’,并返回這個新生成的list。而當傳入的L是一個list,哪怕是空list時,該函數(shù)的作用是向傳入的這個L新加一個元素'END',并返回傳入的那個L。
L.append('END')這一行,如果縮進的話:當函數(shù)傳入的L不是None時,就不會向傳入的這個L新加一個元素'END'。因此縮進與不縮進的效果是不一樣的。
標題名稱:廖雪峰python函數(shù) python教程廖
URL鏈接:http://www.rwnh.cn/article2/doshcoc.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供電子商務、響應式網(wǎng)站、定制開發(fā)、搜索引擎優(yōu)化、品牌網(wǎng)站制作、建站公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)