使用 functools.partial 在 Python 中进行柯里化

PythonPythonBeginner
立即练习

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

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在函数式编程中,柯里化(currying)是一种将接受多个参数的函数转换为一系列每个只接受一个参数的函数的技术。在Python中,我们可以使用 functools.partial() 函数来实现柯里化。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python(("Python")) -.-> python/ModulesandPackagesGroup(["Modules and Packages"]) python(("Python")) -.-> python/BasicConceptsGroup(["Basic Concepts"]) 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{{"使用 functools.partial 在 Python 中进行柯里化"}} python/tuples -.-> lab-13611{{"使用 functools.partial 在 Python 中进行柯里化"}} python/function_definition -.-> lab-13611{{"使用 functools.partial 在 Python 中进行柯里化"}} python/keyword_arguments -.-> lab-13611{{"使用 functools.partial 在 Python 中进行柯里化"}} python/lambda_functions -.-> lab-13611{{"使用 functools.partial 在 Python 中进行柯里化"}} python/importing_modules -.-> lab-13611{{"使用 functools.partial 在 Python 中进行柯里化"}} python/using_packages -.-> lab-13611{{"使用 functools.partial 在 Python 中进行柯里化"}} python/standard_libraries -.-> lab-13611{{"使用 functools.partial 在 Python 中进行柯里化"}} end

柯里化函数

编写一个函数 curry(fn, *args),它对给定的函数 fn 进行柯里化。该函数应返回一个新函数,其行为类似于已部分应用了给定参数 argsfn

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

总结

在这个挑战中,你学习了如何在Python中使用 functools.partial() 来实现一个柯里化函数。柯里化函数允许你将参数部分应用于一个函数,并返回一个接受剩余参数的新函数。