Python 有很多有用的內(nèi)置函數(shù), 但還是不能滿足程序員的需求, 所以需要 自定義函數(shù) 。
網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、微信小程序定制開(kāi)發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了包頭免費(fèi)建站歡迎大家使用!
如何編寫 自定義函數(shù) , 需要用到 def語(yǔ)句, 函數(shù)名, 括號(hào)及參數(shù), 冒號(hào), 函數(shù)說(shuō)明,內(nèi)置縮進(jìn)編碼模塊,return 語(yǔ)句 , 其中有一些也可省略不寫,后面會(huì)慢慢介紹。
編寫函數(shù)不可或缺的元素, 一定都要寫。函數(shù)名盡量寫得簡(jiǎn)單易懂。
一般是對(duì)函數(shù)的描述說(shuō)明。
這是編寫具體的 操作命令 的地方, 如果還未想好如何編寫, 可以使用 pass 來(lái)占位,讓程序可以運(yùn)行起來(lái),防止調(diào)試出錯(cuò)。
參數(shù)放在最后講, 是因?yàn)檫@里面的東西還是很多的。首先看個(gè)例子。
如上的案例都是限制了參數(shù)個(gè)數(shù)的, 最多傳三個(gè)參數(shù) name/age/city , 但是如果有一些特例,需要傳多個(gè)參數(shù)怎么辦呢。 參數(shù)前面加個(gè) * , 變成 可變參數(shù) 。
那如果想要傳多個(gè)包含名稱的參數(shù),例如a=1,b=2,c=3......,那該怎么寫呢。參數(shù)前面加個(gè) ** , 變成 關(guān)鍵字參數(shù) 。
可以加函數(shù)。pythonif語(yǔ)句后可加函數(shù)嵌套使用,返回的是該函數(shù)的布爾值類型。
map() 函數(shù)接受兩個(gè)參數(shù),一個(gè)是函數(shù),一個(gè)是可迭代對(duì)象(Iterable), map 將傳入的函數(shù)依次作用到可迭代對(duì)象的每一個(gè)元素,并把結(jié)果作為迭代器(Iterator)返回。
舉例說(shuō)明,有一個(gè)函數(shù) f(x)=x^2 ,要把這個(gè)函數(shù)作用到一個(gè)list [1,2,3,4,5,6,7,8,9] 上:
運(yùn)用簡(jiǎn)單的循環(huán)可以實(shí)現(xiàn):
運(yùn)用高階函數(shù) map() :
結(jié)果 r 是一個(gè)迭代器,迭代器是惰性序列,通過(guò) list() 函數(shù)讓它把整個(gè)序列都計(jì)算出來(lái)并返回一個(gè) list 。
如果要把這個(gè)list所有數(shù)字轉(zhuǎn)為字符串利用 map() 就簡(jiǎn)單了:
小練習(xí):利用 map() 函數(shù),把用戶輸入的不規(guī)范的英文名字變?yōu)槭鬃帜复髮懫渌懙囊?guī)范名字。輸入 ['adam', 'LISA', 'barT'] ,輸出 ['Adam', 'Lisa', 'Bart']
reduce() 函數(shù)也是接受兩個(gè)參數(shù),一個(gè)是函數(shù),一個(gè)是可迭代對(duì)象, reduce 將傳入的函數(shù)作用到可迭代對(duì)象的每個(gè)元素的結(jié)果做累計(jì)計(jì)算。然后將最終結(jié)果返回。
效果就是: reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
舉例說(shuō)明,將序列 [1,2,3,4,5] 變換成整數(shù) 12345 :
小練習(xí):編寫一個(gè) prod() 函數(shù),可以接受一個(gè) list 并利用 reduce 求積:
map() 和 reduce() 綜合練習(xí):編寫 str2float 函數(shù),把字符串 '123.456' 轉(zhuǎn)換成浮點(diǎn)型 123.456
filter() 函數(shù)用于過(guò)濾序列, filter() 也接受一個(gè)函數(shù)和一個(gè)序列, filter() 把傳入的函數(shù)依次作用于每個(gè)元素,然后根據(jù)返回值是 True 還是 False 決定保留還是丟棄該元素。
舉例說(shuō)明,刪除list中的偶數(shù):
小練習(xí):用 filter() 求素?cái)?shù)
定義一個(gè)篩選函數(shù):
定義一個(gè)生成器不斷返回下一個(gè)素?cái)?shù):
打印100以內(nèi)素?cái)?shù):
python內(nèi)置的 sorted() 函數(shù)可以對(duì)list進(jìn)行排序:
sorted() 函數(shù)也是一個(gè)高階函數(shù),還可以接受一個(gè) key 函數(shù)來(lái)實(shí)現(xiàn)自定義排序:
key 指定的函數(shù)將作用于list的每一個(gè)元素上,并根據(jù) key 函數(shù)返回的結(jié)果進(jìn)行排序.
默認(rèn)情況下,對(duì)字符串排序,是按照ASCII的大小比較的,由于'Z' 'a',結(jié)果,大寫字母Z會(huì)排在小寫字母a的前面。如果想忽略大小寫可都轉(zhuǎn)換成小寫來(lái)比較:
要進(jìn)行反向排序,不必改動(dòng)key函數(shù),可以傳入第三個(gè)參數(shù) reverse=True :
小練習(xí):假設(shè)我們用一組tuple表示學(xué)生名字和成績(jī): L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)] 。用sorted()對(duì)上述列表分別按c成績(jī)從高到低排序:
運(yùn)用匿名函數(shù)更簡(jiǎn)潔:
當(dāng)前文章:python加入函數(shù),python自加函數(shù)
文章網(wǎng)址:http://chinadenli.net/article18/heeddp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開(kāi)發(fā)、搜索引擎優(yōu)化、小程序開(kāi)發(fā)、域名注冊(cè)、做網(wǎng)站、定制開(kāi)發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)