国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

解析Python 偏函數(shù)用法全方位實現(xiàn)

瀏覽:84日期:2022-07-19 15:10:04

Python的functools模塊中有一種函數(shù)叫“偏函數(shù)”,自從接觸它以來,發(fā)現(xiàn)確實是一個很有用且簡單的函數(shù),相信你看完這篇文章,你也有相見恨晚的感覺。

我們都知道,函數(shù)入?yún)⒖梢栽O置默認值來簡化函數(shù)調(diào)用,而偏函數(shù)的作用就是將入?yún)⑦M行默認填充,降低函數(shù)使用的難度。

如int()函數(shù),可以將字符型轉(zhuǎn)換為整型,且默認的都是以十進制形式來轉(zhuǎn)換,那為什么一定是十進制呢?如果想用以二進制的形式轉(zhuǎn)換呢?其實我們可以看一下int函數(shù)它本身的定義偏函數(shù),一個讓你相見恨晚的實用函數(shù)

解析Python 偏函數(shù)用法全方位實現(xiàn)

可以看到int有兩種用法,可以傳一個位置參數(shù),還可以多傳一個關鍵字參數(shù)base,也就是基于什么格式轉(zhuǎn)換,默認不傳base參數(shù)是以十進制轉(zhuǎn)換。所以,用二進制形式轉(zhuǎn)換的話只要base=2即可(見下方代碼)

value = int(’10000’)print(value) # 10000 value = int(’10000’, base=2)print(value) # 16

如果每次轉(zhuǎn)換的字符串的時候都要輸入base參數(shù),顯得很麻煩,因此偏函數(shù)的作用就體現(xiàn)出來了,可以使用functools.partial()函數(shù)來重新定義

from functools import partialint2 = partial(int, base=2)res = int2(’10000’)print(res) # 16

到這里,你應該已經(jīng)感覺到了偏函數(shù)的一點點魅力吧,那我們再從多個角度進一步看透它。

自定義函數(shù)的使用

def add(a, b, c): print(’a=’,a,’b=’,b,’c=’,c) return a + b + cadd10 = partial(add, 10)res = add10(1, 2) # a= 10 b= 1 c= 2

如上代碼中,partial(add, 10)入?yún)⒉]有指定哪個關鍵字參數(shù),函數(shù)卻默認的將這個值傳給了第一個參數(shù)a,那就說明,當沒有指定默認參數(shù)時,默認賦值給第一個參數(shù),余下參數(shù)按位置參數(shù)賦值。

當入?yún)榭勺儏?shù)時

def sum(*args): s = 0 for n in args: s += n return ssum10 = partial(sum, 10)print(sum10(1)) # 11print(sum10()) # 10

按上述理解,沒有指定默認參數(shù)時,默認賦給第一個參數(shù),那么第一個參數(shù)永遠是10,后面再傳入?yún)⒌脑捑蛷牡诙€參數(shù)開始計算,因此會實現(xiàn)10 + 1 = 11 的結(jié)果。同樣,如果不繼續(xù)傳參的話,只有默認的10,所以結(jié)果就是10

當入?yún)榭勺冴P鍵字參數(shù)時

D = {’value1’:10, ’value2’:20}V = {’Default’:100}def show(**kw): for k in kw: print(k, kw.get(k))showDef = partial(show, **V)showDef(**D)# Default 100# value1 10# value2 20

同理,此時入?yún)⒂捎谑强勺儏?shù),因此默認是第一個傳入,先打印Default關鍵字,這里關注一下函數(shù)的寫法,可變關鍵字參數(shù)要寫成(**V)

當入?yún)橄拗频年P鍵字參數(shù)時

def student(name, * , age, city): print(’name:’,name, ’age:’,age, ’city:’,city)studentAge = partial(student, age=20)studentAge(’Tom’,’Beijing’)# TypeError: student() takes 1 positional argument but 2 positional arguments (and 1 keyword-only argument) were given

我們知道,當用*號分隔開,表示后面的關鍵字參數(shù)是必傳的,因此對于默認參數(shù)也是同樣適用,即當參數(shù)為必傳時,偏函數(shù)也需要對每個關鍵字參數(shù)設置默認值。因此修改后為

studentAge = partial(student, age=20, city=’Beijing’)studentAge(’Tom’) # name: Tom age: 20 city: Beijing

綜上,偏函數(shù)可以將目標函數(shù)的部分參數(shù)固化后,重新定義為新的函數(shù),降低了編碼的復雜度,尤其是當參數(shù)很多的時候,或者只用到其中某些參數(shù)的場景下時,效果更為顯著。

到這里,你是否有了相見恨晚的感覺呢?簡單函數(shù)小技巧,非常實用的偏函數(shù)用法就介紹完了,更多相關Python 偏函數(shù)內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持好吧啦網(wǎng)!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 精品国产乱码久久久久久一区二区 | 黄色网址进入 | 99精品一区二区三区 | 91免费视| 美国亚洲成年毛片 | 三级毛片免费观看 | 精品国产a | 永久免费毛片手机版在线看 | 一级视频在线 | 亚洲成a人片在线播放 | 欧美日韩国产片 | 思99re久久这里只有精品首页 | 亚洲天堂小视频 | 国产精品一区亚洲一区天堂 | 无遮挡一级毛片私人影院 | 国产亚洲影院 | 在线はじめてのおるすばん | 九九视频在线观看 | 成年人在线免费 | 91精品手机国产露脸 | 国产成人精品视频免费 | 日本高清视频在线观看 | 国产精品亚洲高清一区二区 | 99在线观看精品 | 中文字幕视频网站 | 国产在线成人精品 | 亚洲国产精品久久网午夜 | 美女被免费视频网站a国产 美女被免费网站视频软件 美女被免费网站在线软件 美女被免费网站在线视频软件 | 亚洲久久视频 | 欧美日韩第三页 | 99精品视频在线观看免费 | 国产成人精品免费午夜 | 九九视频在线看精品 | 欧美日比视频 | 欧美一级毛级毛片 | 国产精品久久久久久麻豆一区 | 成人a影片在线观看 | 亚洲欧美在线播放 | 中文字幕精品一区二区2021年 | 人成午夜性刺激免费 | 亚洲一区二区三区精品国产 |