亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

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

解析Python 偏函數用法全方位實現

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

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

我們都知道,函數入參可以設置默認值來簡化函數調用,而偏函數的作用就是將入參進行默認填充,降低函數使用的難度。

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

解析Python 偏函數用法全方位實現

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

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

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

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

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

自定義函數的使用

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)入參并沒有指定哪個關鍵字參數,函數卻默認的將這個值傳給了第一個參數a,那就說明,當沒有指定默認參數時,默認賦值給第一個參數,余下參數按位置參數賦值。

當入參為可變參數時

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

按上述理解,沒有指定默認參數時,默認賦給第一個參數,那么第一個參數永遠是10,后面再傳入參的話就從第二個參數開始計算,因此會實現10 + 1 = 11 的結果。同樣,如果不繼續傳參的話,只有默認的10,所以結果就是10

當入參為可變關鍵字參數時

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

同理,此時入參由于是可變參數,因此默認是第一個傳入,先打印Default關鍵字,這里關注一下函數的寫法,可變關鍵字參數要寫成(**V)

當入參為限制的關鍵字參數時

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

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

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

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

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

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 国内精品一区二区三区东京 | 高清国产精品入口麻豆 | 国产精品video | 国产精品久久久久久久久久一区 | 中国一级特黄的片子免费 | 国产一级理仑片日本 | 在线观看大片的网站 | 亚洲国产日韩无在线播放 | 一级特黄高清完整大片 | 骚婷婷| 99久久国产免费 - 99久久国产免费 | 黑人巨大白妞出浆 | 国产一级一片免费播放刺激 | 一级毛片私人影院老司机 | 一区二区三区无码高清视频 | 久久精品国产亚洲综合色 | 欧美成人性高清观看 | 欧美黑人vs亚裔videos | 一级欧美一级日韩片 | 日本japanesevideo护士 | 国产成人精视频在线观看免费 | 欧美亚洲偷图色综合91 | 国产福利一区二区三区四区 | 久青草国产手机视频免费观看 | 日本国产欧美色综合 | 精品国产三级a∨在线观看 精品国产三级在线观看 | 成年看片免费高清观看 | 欧美护士激情第一欧美精品 | 91九色porn偷拍在线 | 免费在线观看中日高清生活片 | 成人免费淫片免费观看 | 色老头福利视频在线观看 | 欧美成人观看免费完全 | 成人看片在线观看 | 4388x17亚洲最大成人网 | 亚洲成人免费在线视频 | 国产在线麻豆精品观看 | 日本xxx高清免费视频 | 国产一级黄 | 欧美一级毛片欧美大尺度一级毛片 | 欧美色视频免费高清播放 |