Python代码阅读第45篇柯里化

北京中科中医院好不好 http://pf.39.net/bdfyy/bdfyc/150505/4618946.html

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

#python#

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

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

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

curry

fromfunctoolsimportpartialdefcurry(fn,*args):returnpartial(fn,*args)#EXAMPLESadd=lambdax,y:x+yadd10=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。大致等价于:

defpartial(func,/,*args,**keywords):defnewfunc(*fargs,**fkeywords):newkeywords={**keywords,**fkeywords}returnfunc(*args,*fargs,**newkeywords)newfunc.func=funcnewfunc.args=argsnewfunc.keywords=keywordsreturnnewfunc


转载请注明:http://www.aierlanlan.com/rzfs/8692.html

  • 上一篇文章:
  •   
  • 下一篇文章: