最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2020年06月26日 10:13:16   作者:挖挖土豆  
這篇文章主要介紹了解析Python 偏函數(shù)用法全方位實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧

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

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

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

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

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

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

from functools import partial

int2 = partial(int, base=2)
res = int2('10000')
print(res)   # 16

到這里,你應(yīng)該已經(jīng)感覺到了偏函數(shù)的一點(diǎn)點(diǎn)魅力吧,那我們?cè)購亩鄠€(gè)角度進(jìn)一步看透它。

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

def add(a, b, c):
  print('a=',a,'b=',b,'c=',c)
  return a + b + c

add10 = partial(add, 10)
res = add10(1, 2)   # a= 10 b= 1 c= 2

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

當(dāng)入?yún)榭勺儏?shù)時(shí)

def sum(*args):
  s = 0
  for n in args:
    s += n
  return s

sum10 = partial(sum, 10)
print(sum10(1))  # 11
print(sum10())   # 10

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

當(dāng)入?yún)榭勺冴P(guān)鍵字參數(shù)時(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

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

當(dāng)入?yún)橄拗频年P(guān)鍵字參數(shù)時(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

我們知道,當(dāng)用*號(hào)分隔開,表示后面的關(guān)鍵字參數(shù)是必傳的,因此對(duì)于默認(rèn)參數(shù)也是同樣適用,即當(dāng)參數(shù)為必傳時(shí),偏函數(shù)也需要對(duì)每個(gè)關(guān)鍵字參數(shù)設(shè)置默認(rèn)值。因此修改后為

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

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

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

相關(guān)文章

  • Python從ZabbixAPI獲取信息及實(shí)現(xiàn)Zabbix-API 監(jiān)控的方法

    Python從ZabbixAPI獲取信息及實(shí)現(xiàn)Zabbix-API 監(jiān)控的方法

    這篇文章主要介紹了Python從ZabbixAPI獲取信息及實(shí)現(xiàn)Zabbix-API 監(jiān)控的方法,需要的朋友可以參考下
    2018-09-09
  • Python中LSTM回歸神經(jīng)網(wǎng)絡(luò)時(shí)間序列預(yù)測(cè)詳情

    Python中LSTM回歸神經(jīng)網(wǎng)絡(luò)時(shí)間序列預(yù)測(cè)詳情

    這篇文章主要介紹了Python中LSTM回歸神經(jīng)網(wǎng)絡(luò)時(shí)間序列預(yù)測(cè)詳情,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-07-07
  • python輪詢機(jī)制控制led實(shí)例

    python輪詢機(jī)制控制led實(shí)例

    這篇文章主要介紹了python輪詢機(jī)制控制led實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • Python中遍歷字典過程中更改元素導(dǎo)致異常的解決方法

    Python中遍歷字典過程中更改元素導(dǎo)致異常的解決方法

    這篇文章主要介紹了Python中遍歷字典過程中更改元素導(dǎo)致錯(cuò)誤的解決方法,針對(duì)增刪元素后出現(xiàn)dictionary changed size during iteration的異常解決做出討論和解決,需要的朋友可以參考下
    2016-05-05
  • Python實(shí)現(xiàn)數(shù)字的格式化輸出

    Python實(shí)現(xiàn)數(shù)字的格式化輸出

    這篇文章主要介紹了Python如何實(shí)現(xiàn)數(shù)字的格式化輸出,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-08-08
  • django中使用原生sql語句的方法步驟

    django中使用原生sql語句的方法步驟

    這篇文章主要介紹了django中使用原生sql語句的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • numpy下的flatten()函數(shù)用法詳解

    numpy下的flatten()函數(shù)用法詳解

    這篇文章主要介紹了numpy下的flatten()函數(shù)用法詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • 如何在Win10系統(tǒng)使用Python3連接Hive

    如何在Win10系統(tǒng)使用Python3連接Hive

    這篇文章主要介紹了如何在Win10系統(tǒng)使用Python3連接Hive,幫助大家更好的利用python讀取數(shù)據(jù),進(jìn)行探索、分析和挖掘工作。感興趣的朋友可以了解下
    2020-10-10
  • python中from import的使用解讀

    python中from import的使用解讀

    本文總結(jié)了Python中from和import的使用方法,包括導(dǎo)入模塊和導(dǎo)入模塊中的對(duì)象,強(qiáng)調(diào)了模塊和對(duì)象的概念,并給出了具體的使用示例,最后,建議根據(jù)代碼維護(hù)性和團(tuán)隊(duì)編碼風(fēng)格來選擇合適的導(dǎo)入方式
    2025-03-03
  • Python操作MySQL數(shù)據(jù)庫的兩種方式實(shí)例分析【pymysql和pandas】

    Python操作MySQL數(shù)據(jù)庫的兩種方式實(shí)例分析【pymysql和pandas】

    這篇文章主要介紹了Python操作MySQL數(shù)據(jù)庫的兩種方式,結(jié)合實(shí)例形式分析了Python使用pymysql和pandas模塊進(jìn)行mysql數(shù)據(jù)庫的連接、增刪改查等操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2019-03-03

最新評(píng)論

衢州市| 南宫市| 鲁甸县| 皮山县| 应城市| 新巴尔虎右旗| 蓬莱市| 平湖市| 莲花县| 宁武县| 隆子县| 枣强县| 衡阳县| 阿合奇县| 麻城市| 德格县| 景谷| 南康市| 海门市| 清新县| 隆回县| 泸定县| 南岸区| 仁寿县| 资源县| 西平县| 油尖旺区| 荥阳市| 神农架林区| 民县| 东宁县| 探索| 彩票| 会理县| 合江县| 闽侯县| 平阴县| 蒙城县| 台东县| 阿尔山市| 青铜峡市|