提高力量

假設我們想要將 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 引數,並定義了三種不同的函式。

無需使用上面定義的抽象函式(你可以將其設定為私有 ),但你可以使用部分應用函式來處理將數字提升到固定值。