国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python使用functools模塊中的partial函數生成偏函數

2019-11-25 16:40:06
字體:
來源:轉載
供稿:網友

python 中提供一種用于對函數固定屬性的函數(與數學上的偏函數不一樣)

# 通常會返回10進制int('12345')  # print 12345 # 使用參數 返回 8進制int('11111', 8)  # print 4681

每次都得添加參數比較麻煩, functools提供了partial的方法

import functoolsfoo = functools.partial(int, base=8)foo('11111')  # print 4681

通過這種方法生成一個固定參數的新函數.

假設要轉換大量的二進制字符串,每次都傳入int(x, base=2)非常麻煩,于是,我們想到,可以定義一個int2()的函數,默認把base=2傳進去:

def int2(x, base=2):  return int(x, base)

這樣,我們轉換二進制就非常方便了:

>>> int2('1000000')64>>> int2('1010101')85

functools.partial就是幫助我們創建一個偏函數的,不需要我們自己定義int2(),可以直接使用下面的代碼創建一個新的函數int2:

>>> import functools>>> int2 = functools.partial(int, base=2)>>> int2('1000000')64>>> int2('1010101')85

所以,簡單總結functools.partial的作用就是,把一個函數的某些參數給固定住(也就是設置默認值),返回一個新的函數,調用這個新函數會更簡單。

注意到上面的新的int2函數,僅僅是把base參數重新設定默認值為2,但也可以在函數調用時傳入其他值:

>>> int2('1000000', base=10)1000000

最后,創建偏函數時,實際上可以接收函數對象、*args和**kw這3個參數,當傳入:

int2 = functools.partial(int, base=2)

實際上固定了int()函數的關鍵字參數base,也就是:

int2('10010')

相當于:

kw = { 'base': 2 }int('10010', **kw)

當傳入:

max2 = functools.partial(max, 10)

實際上會把10作為*args的一部分自動加到左邊,也就是:

max2(5, 6, 7)

相當于:

args = (10, 5, 6, 7)max(*args)

結果為10。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 杨浦区| 香河县| 钟祥市| 黎平县| 平昌县| 双鸭山市| 桃园县| 青岛市| 田阳县| 双柏县| 留坝县| 玉溪市| 仪陇县| 漳州市| 温州市| 旌德县| 三都| 安乡县| 威海市| 乌恰县| 博白县| 吐鲁番市| 广宁县| 和林格尔县| 泸西县| 化德县| 仙游县| 柏乡县| 孙吴县| 桦川县| 密云县| 宕昌县| 瓮安县| 烟台市| 贺州市| 哈巴河县| 蓬溪县| 岑巩县| 贡嘎县| 齐河县| 昭平县|