ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Python代码阅读(第45篇):柯里化

2021-12-09 18:03:22  阅读:197  来源: 互联网

标签:45 func 函数 Python args 参数 柯里化 keywords partial


Python 代码阅读合集介绍:为什么不推荐Python初学者直接看项目源码

本篇阅读的代码实现了将函数柯里化的功能。

在计算机科学中,柯里化(英语:Currying),又译为卡瑞化或加里化,是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。

本篇阅读的代码片段来自于30-seconds-of-python

curry

from functools import partial

def curry(fn, *args):
  return partial(fn,*args)

# EXAMPLES
add = lambda x, y: x + y
add10 = curry(add, 10)

add10(20) # 30

curry函数接收一个接受多个参数的初始函数和部分参数,返回接受单一参数的函数。

函数使用functools.partial()生成一个部分对象。该部分对象被调用时的行为类似于fn给定了部分参数被调用,需要提供剩余参数。

在直觉上,柯里化声称“如果你固定某些参数,你将得到接受余下参数的一个函数”。所以对于有两个变量的函数x+y,如果固定了y=2,则得到有一个变量的函数x+2

functools.partial(func, /, *args, **keywords)
返回一个新的 部分对象,当被调用时其行为类似于 func 附带位置参数args和关键字参数keywords被调用。 如果为调用提供了更多的参数,它们会被附加到args。 如果提供了额外的关键字参数,它们会扩展并重载keywords。 大致等价于:

def partial(func, /, *args, **keywords):
  def newfunc(*fargs, **fkeywords):
    newkeywords = {**keywords, **fkeywords}
    return func(*args, *fargs, **newkeywords)
  newfunc.func = func
  newfunc.args = args
  newfunc.keywords = keywords
  return newfunc

标签:45,func,函数,Python,args,参数,柯里化,keywords,partial
来源: https://blog.csdn.net/Yiess/article/details/121836029

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有