Python代码阅读宝典介绍:为什么不建议Python初学者直接阅读项目源码?本文阅读的代码实现了柯里化函数的功能。在计算机科学中,Currying(英语:Currying),又译为Carrying或Currying,是将一个接受多个参数的函数,转化为一个接受单个参数(原函数的第一个参数)的函数,并返回的一种技术接受剩余参数并返回结果的新函数。本文阅读的代码片段来自30-seconds-of-python。curryfromfunctoolsimportpartialdefcurry(fn,*args):returnpartial(fn,*args)#EXAMPLESadd=lambdax,y:x+yadd10=curry(add,10)add10(20)#30curry函数接受一个接受多个Initial带有参数和部分参数的函数,返回一个接受单个参数的函数。该函数使用functools.partial()生成一个部分对象。这部分对象被调用时的行为类似于调用fn时给定一些参数,剩下的参数需要提供。直觉上,柯里化表明“如果你修复了一些参数,你就会得到一个函数来处理其余的”。所以对于一个有两个变量的函数x+y,如果你固定y=2,你会得到一个只有一个变量的函数x+2。functools.partial(func,/,*args,**keywords)返回一个新的部分对象,调用时其行为类似于使用位置参数args和关键字参数关键字调用func。如果为调用提供了更多参数,它们将附加到args。如果提供了额外的关键字参数,它们会扩展和重载关键字。大致等价于:defpartial(func,/,*args,**keywords):defnewfunc(*fargs,**fkeywords):newkeywords={**keywords,**fkeywords}returnfunc(*args,*fargs,**newkeywords)newfunc.func=funcnewfunc.args=argsnewfunc.keywords=关键字返回newfunc
