【发布时间】:2016-12-26 13:47:14
【问题描述】:
在Codewars.com我遇到了以下任务:
创建一个函数
add,在连续调用时将数字相加。所以add(1)应该返回1,add(1)(2)应该返回1+2,...
虽然我熟悉 Python 的基础知识,但我从未遇到过能够连续调用的函数,即可以调用为 f(x)(y)(z)... 的函数 f(x)。到目前为止,我什至不确定如何解释这个符号。
作为一名数学家,我怀疑f(x)(y) 是一个函数,它为每个x 分配一个函数g_{x},然后返回g_{x}(y) 和f(x)(y)(z)。
如果这种解释是正确的,Python 将允许我动态创建对我来说非常有趣的函数。在过去的一个小时里,我在网上搜索了一个小时,但无法找到正确方向的线索。不过,由于我不知道这个编程概念是如何被调用的,所以这可能不会太令人惊讶。
你如何称呼这个概念,我在哪里可以阅读更多关于它的信息?
【问题讨论】:
-
看起来你正在寻找柯里化函数
-
提示:嵌套函数是动态创建的,可以访问其父函数的局部变量,并且能够作为(可调用的)对象返回。
-
@JonathonReinhart 这就是我思考问题的方式。但我并没有真正看到如何实现它。
-
顺便说一句:Python肯定允许你动态创建函数。如果您有兴趣,可以阅读以下几个相关概念:WP: First-class functions | How do you make a higher order function in Python? |
functools.partial()| WP: Closures -
@LukasGraf 我会看看它。谢谢!
标签: python function python-3.x