這篇文章給大家介紹偏函數(shù)怎么在Python中使用,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。
網(wǎng)站設(shè)計(jì)制作、做網(wǎng)站服務(wù)團(tuán)隊(duì)是一支充滿(mǎn)著熱情的團(tuán)隊(duì),執(zhí)著、敏銳、追求更好,是創(chuàng)新互聯(lián)的標(biāo)準(zhǔn)與要求,同時(shí)竭誠(chéng)為客戶(hù)提供服務(wù)是我們的理念。成都創(chuàng)新互聯(lián)公司把每個(gè)網(wǎng)站當(dāng)做一個(gè)產(chǎn)品來(lái)開(kāi)發(fā),精雕細(xì)琢,追求一名工匠心中的細(xì)致,我們更用心!python中偏函數(shù)
當(dāng)一個(gè)函數(shù)有很多參數(shù)時(shí),調(diào)用者就需要提供多個(gè)參數(shù)。如果減少參數(shù)個(gè)數(shù),就可以簡(jiǎn)化調(diào)用者的負(fù)擔(dān)。
比如,int()
函數(shù)可以把字符串轉(zhuǎn)換為整數(shù),當(dāng)僅傳入字符串時(shí),int()
函數(shù)默認(rèn)按十進(jìn)制轉(zhuǎn)換:
>>> int('12345') 12345
但int()
函數(shù)還提供額外的base參數(shù),默認(rèn)值為10。如果傳入base參數(shù),就可以做 N 進(jìn)制的轉(zhuǎn)換:
>>> int('12345', base=8) 5349 >>> int('12345', 16) 74565
假設(shè)要轉(zhuǎn)換大量的二進(jìn)制字符串,每次都傳入int(x, base=2)
非常麻煩,于是,我們想到,可以定義一個(gè)int2()
的函數(shù),默認(rèn)把base=2傳進(jìn)去:
def int2(x, base=2): return int(x, base)
這樣,我們轉(zhuǎn)換二進(jìn)制就非常方便了:
>>> int2('1000000') 64 >>> int2('1010101') 85
functools.partial就是幫助我們創(chuàng)建一個(gè)偏函數(shù)的,不需要我們自己定義int2()
,可以直接使用下面的代碼創(chuàng)建一個(gè)新的函數(shù)int2:
>>> import functools >>> int2 = functools.partial(int, base=2) >>> int2('1000000') 64 >>> int2('1010101') 85
所以,functools.partial可以把一個(gè)參數(shù)多的函數(shù)變成一個(gè)參數(shù)少的新函數(shù),少的參數(shù)需要在創(chuàng)建時(shí)指定默認(rèn)值,這樣,新函數(shù)調(diào)用的難度就降低了。
任務(wù)
在第7節(jié)中,我們?cè)趕orted這個(gè)高階函數(shù)中傳入自定義排序函數(shù)就可以實(shí)現(xiàn)忽略大小寫(xiě)排序。請(qǐng)用functools.partial把這個(gè)復(fù)雜調(diào)用變成一個(gè)簡(jiǎn)單的函數(shù):
sorted_ignore_case(iterable)
要固定sorted()
的cmp參數(shù),需要傳入一個(gè)排序函數(shù)作為cmp的默認(rèn)值。
參考代碼:
#!/usr/bin/python #coding: utf-8 import functools # cmp = lambda s1, s2: cmp(s1.upper(), s2.upper()) 最左邊一定要有cmp = , 這樣執(zhí)行print的時(shí)候會(huì)執(zhí)行 # 匿名函數(shù)中的cmp函數(shù),關(guān)于為什么使用cmp = ,請(qǐng)看上面的例子中,base = 2, 如果說(shuō)沒(méi)有base = 的話(huà),結(jié)果 # 肯定會(huì)出錯(cuò) # cmp函數(shù)釋義: # cmp(x,y) 函數(shù)用于比較2個(gè)對(duì)象,如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1 # 用于排序中,默認(rèn)從小到大 sorted_ignore_case = functools.partial(sorted, cmp = lambda s1, s2: cmp(s1.upper(), s2.upper())) print(sorted_ignore_case(['bob', 'about', 'Zoo', 'Credit'])) # 不使用偏函數(shù)的時(shí)候 ''' def cmp_ignore_case(s1, s2): u1 = s1.upper() u2 = s2.upper() if u1 > u2: return 1 if u1 < u2: return -1 return 0 print sorted(['bob', 'about', 'Zoo', 'Credit'], cmp_ignore_case) '''
運(yùn)行結(jié)果:
['about', 'bob', 'Credit', 'Zoo']
關(guān)于偏函數(shù)怎么在Python中使用就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。
網(wǎng)站標(biāo)題:偏函數(shù)怎么在Python中使用-創(chuàng)新互聯(lián)
URL鏈接:http://aaarwkj.com/article42/iciec.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、品牌網(wǎng)站制作、自適應(yīng)網(wǎng)站、網(wǎng)站收錄、定制開(kāi)發(fā)、靜態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容