• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

深入解析Python–Currying函数

python 搞代码 4年前 (2022-01-09) 17次浏览 已收录 0个评论

本文实例讲述了深入解析Python–Currying函数。分享给大家供大家参考,具体如下:

一,定义:

1) 指的是将原来接受两个参数的函数变成新的接受一个参数的函数的过程。新的函数返回一个以原有第二个参数为参数的函数

2)举例:将加法函数Currying:其方法就是通过嵌套把函数转化为Currying函数。

def add(x,y):    return x + ydef add(x):    def _add(y):        return x + y    return _add

二,应用:

需求:

一个加法函数,想增强它的功能,能够输出被调用过以及调用的参数信息。

def add(x,y):    return x + y

现在我们增加信息输出功能

def add(x,y):    print('call add,x + y')  #log output to the console    return x + y

上面的加法函数虽然完成了需求,但有下面三个缺点:

1.打印语句的耦合度太高。

2.加法函数属于业务功能,而输出信息的功能能属于非业务功能代码,不该放在业务函数加法中。

那我们做出下面改进:

def add(x,y):    return x + ydef logger(fn):    print('begin')  #enhanced output    x = fn(4,5)    print('end')    #enhanced features    return xprint(logger(add))

上面的改进做到了业务功能分离,但是fn函数调用传参是个问题。我们想要灵活的传入参数,但是参数却在内部函数里面,如何用灵活的语言python来解决这个问题呢?

def add(x,y):    return x + ydef logger(fn):    def _logger(*args,**kwargs):        print('begin')        c = fn(*args,**kwargs)        print('end')        return c    return _loggerlogger(add)(2,3)

现在,我们可以灵活的输入参数了

下面给出几个更具体的例子:

def ad1(m,n,*,l=909):    return m + n + ldef loger(fn,*args,**kwargs):    print('What\'s the matter?')    ret = fn(*args,**kwargs)    return retprint(loger(ad1,2,3,l=4))   #Can you currying them?
def add(x,y,*,z=9):    return x + y + zdef logger(fn,*args,**kwargs):    print('This is a stupid function')    ret = fn(*args,**kwargs)  #after collections it needs to be deconstructed    return retprint(logger(add,2,4,z=17))
def ad1(m,n,*,l=909):    return m + n + ldef loger(fn):    def _loger(*args,**kwargs):   #append a function as wrapper        print('What\'s the matter?')            ret = fn(*args,**kwargs)   #the function which is be wrapped and transfer args and kwargs        return ret    return _loger#print(loger(ad1)(2,3,l=4))  also okayt = loger(ad1)  #defind the function logerr = t(2,3,l=4)  # income parameters and transfer itprint(r)

三,总结:

Currying学习完毕之后会有python中最最重要的最本文来源gaodai#ma#com搞*!代#%^码网%最精髓的知识在等着我们–装饰器

相关推荐:

js函数柯里化

函数式中的Currying

JavaScript 函数的scope,currying

Currying

以上就是深入解析Python–Currying函数的详细内容,更多请关注搞代码gaodaima其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:深入解析Python–Currying函数

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址