带函数的返回函数

2024-09-22 16:40:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我想做如下的事情:

def getFunction(params):
   f= lambda x:
       do stuff with params and x
   return f

我得到了无效的语法。Python的正确方法是什么?在

这样我就可以调用f(x),而不必调用f(x,params),这在我看来有点麻烦


Tags: and方法lambdareturndefwith语法params
3条回答

看起来您实际要做的是partial function application,而^{}提供了一个解决方案。例如,如果您有一个函数multiply()

def multiply(a, b):
    return a * b

。。。然后您可以创建一个double()函数1,其中一个参数预先填充如下:

^{pr2}$

。。。如预期的那样工作:

>>> double(7)
14

技术上讲,它是一个partial对象,不是函数,但它的行为方式相同。在

Python中不能有多行lambda表达式,但可以返回lambda或完整函数:

def get_function1(x):
    f = lambda y: x + y
    return f

def get_function2(x):
    def f(y):
        return x + y
    return f

lambda表达式是创建函数的一种非常有限的方法,不能有多行/表达式(每个the tutorial“它们在语法上限制为一个表达式”)。但是,您可以嵌套标准函数def初始化:

def getFunction(params):
   def to_return(x):
       # do stuff with params and x
   return to_return

函数是Python中的一类对象,因此一旦定义了函数,就可以像使用lambda创建的函数一样传递to_return,并且可以通过任何方式访问“闭包”变量(参见Why aren't python nested functions called closures?)。在

相关问题 更多 >