大家好,我是季劼,今天我要講的是python的 partial function這個好用的功能

首先會先分成幾個部分,想要省時間的話可以自行跳到想看的部分!

  1. 使用狀況及使用情境講解
  2. 使用方法
  3. 用不同視角看待partial function更好記憶

 


1. 使用狀況及使用情境講解

想像一下,如果我們有一個吃很多參數的function,如下圖

每一次我們要取得結果的話,都要把每個參數都丟進去

image

但是! 使用的情境是b跟c大部分時間都不改變

這樣我們在每次呼叫的時候,都必須把b跟c都丟進去,

想像一下,如果這些參數名稱都很長,而且超多參數的話,

每次使用都要重新丟進去,不僅可讀性不佳,而且也要隨時注意其他參數的變化

解決方法1:

那也有人會說,那我們可以定義有預設數值的function啊,如下圖

image

沒錯! 這樣就可以解決,需要重複丟的問題了,

但是! 如果這個時候預設參數改變了,

那這樣還是需要重複丟入改變後的參數,還是十分不美觀和不方便

而且如果這個function是來自於別人的library,我們也不能重寫人家的function

那要怎麼辦呢?

就要直接來到使用partial function的部份!

 


2. partial 使用方法

解決方法2:

使用partial function!,如下圖

image

可以看到,我們把原本的function丟進去,跟他指定要預先填寫b和c的值

這樣一來,就每次只要填寫改變的a就好了! 就是這麼簡單!

而且,好處是當某一個變數會有小改變的時候,

只要將前面的partial function重新填寫一次,

就可以又重複填寫a即可,這樣一來,我們的程式碼就簡潔好懂

還可以為我們的parital function定義一個更好懂更好解讀的名字

這樣一來別人或自己未來看到,就可以馬上了解這個function的功能,是不是很棒呢!

 


3.用不同視角看待partial function更好記憶

知道partial function的用法之後,

要來順便介紹他的特別的使用方法,如下圖

image

可以看到,如果我們的partial function臨時想要改一個數值,

可以用指定的,就可以簡單更改了

在指定時,不能用位置的方式指定數值,必須要使用b=xx的直接指定的方式

那這個function的行為呢,其實就跟下方定義一個key word arg 的function一樣

增加了一個非常特別的符號 => * 

這個符號表示 我們要把a之後的位置參數吸收掉,僅使用 b=xx這種方式指定參數

而partial 就可以每次更改都幫我們定義這樣的function,

是不是很方便呢? 

這樣一來我們可以把別人寫好的function事先

部分填寫好特定的參數,或全部填寫好

沒有錯! 全部填寫好也可以喔,可以讓新的function只做預設的事情,不用管參數

有時候系統上固定的處理方式就可以這樣設定,然後把它傳給別的物件使用,

使得別的物件只要管使用就好了,不用管內部參數設定喔!

是不是很好用,可以多多利用partial 將你的程式碼變簡潔!

 

 
arrow
arrow
    創作者介紹
    創作者 林季劼JIJIELIN 的頭像
    林季劼JIJIELIN

    季劼在這邊 JIJIE Here

    林季劼JIJIELIN 發表在 痞客邦 留言(0) 人氣()