提高力量
假設我們想要將 x 加到數 y 。
你寫的是:
def raise_power(x, y):
return x**y
如果你的 y 值可以假設一組有限的值怎麼辦?
假設 y 可以是 [3,4,5]中的一個,並且假設你不希望提供終端使用者使用此類函式的可能性,因為它是計算密集型的。實際上,你將檢查是否提供 y 假定有效值並將你的函式重寫為:
def raise(x, y):
if y in (3,4,5):
return x**y
raise NumberNotInRangeException("You should provide a valid exponent")
亂?讓我們使用抽象形式並將其專門用於所有三種情況:讓我們部分地實現它們。
from functors import partial
raise_to_three = partial(raise, y=3)
raise_to_four = partial(raise, y=4)
raise_to_five = partial(raise, y=5)
這裡發生了什麼?我們修正了 y 引數,並定義了三種不同的函式。
無需使用上面定義的抽象函式(你可以將其設定為私有 ),但你可以使用部分應用函式來處理將數字提升到固定值。