提高力量

假设我们想要将 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 参数,并定义了三种不同的函数。

无需使用上面定义的抽象函数(你可以将其设置为私有 ),但你可以使用部分应用函数来处理将数字提升到固定值。