提高力量
假设我们想要将 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 参数,并定义了三种不同的函数。
无需使用上面定义的抽象函数(你可以将其设置为私有 ),但你可以使用部分应用函数来处理将数字提升到固定值。