2024-09-22 16:40:26 发布
网友
我想做如下的事情:
def getFunction(params): f= lambda x: do stuff with params and x return f
我得到了无效的语法。Python的正确方法是什么?在
这样我就可以调用f(x),而不必调用f(x,params),这在我看来有点麻烦
f(x)
f(x,params)
看起来您实际要做的是partial function application,而^{}提供了一个解决方案。例如,如果您有一个函数multiply():
multiply()
def multiply(a, b): return a * b
。。。然后您可以创建一个double()函数1,其中一个参数预先填充如下:
double()
。。。如预期的那样工作:
>>> double(7) 14
技术上讲,它是一个partial对象,不是函数,但它的行为方式相同。在
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初始化:
lambda
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?)。在
to_return
看起来您实际要做的是partial function application,而^{} 提供了一个解决方案。例如,如果您有一个函数
multiply()
:。。。然后您可以创建一个
^{pr2}$double()
函数1,其中一个参数预先填充如下:。。。如预期的那样工作:
技术上讲,它是一个
partial
对象,不是函数,但它的行为方式相同。在Python中不能有多行lambda表达式,但可以返回lambda或完整函数:
lambda
表达式是创建函数的一种非常有限的方法,不能有多行/表达式(每个the tutorial,“它们在语法上限制为一个表达式”)。但是,您可以嵌套标准函数def
初始化:函数是Python中的一类对象,因此一旦定义了函数,就可以像使用
lambda
创建的函数一样传递to_return
,并且可以通过任何方式访问“闭包”变量(参见Why aren't python nested functions called closures?)。在相关问题 更多 >
编程相关推荐