Введение
Примеры
Поднять власть
Давайте предположим , что мы хотим возвести x в степень у.
Вы бы написали это как:
def raise_power(x, y):
return x**y
Что делать , если у значения может принимать конечное множество значений?
Давайте предположим , что у может быть один из [3,4,5] и предположим, что вы не хотите предлагать конечному пользователю возможность использовать такую функцию , так как она является очень интенсивными вычислениями. На самом деле вы бы проверить , если при условии , у принимает правильное значение и переписать функцию:
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 Params , и мы определили три различные функции.
Нет необходимости использовать абстрактную функцию , определенную выше (вы могли бы сделать его закрытым) , но вы можете использовать частичные прикладные функции для решения с привлечением ряда на фиксированное значение.