Каррирование в Python с использованием functools.partial

PythonPythonBeginner
Практиковаться сейчас

This tutorial is from open-source community. Access the source code

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В функциональном программировании каррирование - это техника преобразования функции, которая принимает несколько аргументов, в последовательность функций, каждая из которых принимает только один аргумент. В Python мы можем использовать функцию functools.partial() для реализации каррирования.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/ModulesandPackagesGroup(["Modules and Packages"]) python(("Python")) -.-> python/BasicConceptsGroup(["Basic Concepts"]) python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python/BasicConceptsGroup -.-> python/comments("Comments") python/DataStructuresGroup -.-> python/tuples("Tuples") python/FunctionsGroup -.-> python/function_definition("Function Definition") python/FunctionsGroup -.-> python/keyword_arguments("Keyword Arguments") python/FunctionsGroup -.-> python/lambda_functions("Lambda Functions") python/ModulesandPackagesGroup -.-> python/importing_modules("Importing Modules") python/ModulesandPackagesGroup -.-> python/using_packages("Using Packages") python/ModulesandPackagesGroup -.-> python/standard_libraries("Common Standard Libraries") subgraph Lab Skills python/comments -.-> lab-13611{{"Каррирование в Python с использованием functools.partial"}} python/tuples -.-> lab-13611{{"Каррирование в Python с использованием functools.partial"}} python/function_definition -.-> lab-13611{{"Каррирование в Python с использованием functools.partial"}} python/keyword_arguments -.-> lab-13611{{"Каррирование в Python с использованием functools.partial"}} python/lambda_functions -.-> lab-13611{{"Каррирование в Python с использованием functools.partial"}} python/importing_modules -.-> lab-13611{{"Каррирование в Python с использованием functools.partial"}} python/using_packages -.-> lab-13611{{"Каррирование в Python с использованием functools.partial"}} python/standard_libraries -.-> lab-13611{{"Каррирование в Python с использованием functools.partial"}} end

Каррированная функция

Напишите функцию curry(fn, *args), которая осуществляет каррирование заданной функции fn. Функция должна возвращать новую функцию, которая ведет себя аналогично fn с заданными аргументами args, частично примененными.

from functools import partial

def curry(fn, *args):
  return partial(fn, *args)
add = lambda x, y: x + y
add10 = curry(add, 10)
add10(20) ## 30

Резюме

В этом испытании вы узнали, как реализовать каррированную функцию с использованием functools.partial() в Python. Каррированная функция позволяет вам частично применить аргументы к функции и вернуть новую функцию, которая принимает оставшиеся аргументы.