Python 代码浏览合集介绍:为什么不举荐Python初学者间接看我的项目源码

本篇浏览的代码实现了将函数柯里化的性能。

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

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

curry

from functools import partialdef curry(fn, *args):  return partial(fn,*args)# EXAMPLESadd = lambda x, 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。 大抵等价于:

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