如何在python中将一个函数传递给另一个函数

时间:2014-11-01 02:00:48

标签: python lambda

我对python相对较新,我想知道是否可以将一个函数传递给另一个函数。我有一些基本上做同样想法的功能:

if(#some condition):
  #do something
else:
  #do something else

我想做的是这样的事情:

def generic_func(self, x, y):
  if #somecondition:
   #do function x
  else:
   #do function y

def calls_generic_func(self, key, value):
  lambda x: self.list[-1].set(key,value)
  lambda y: self.d.set(key,value)
  self.generic_func(x,y)

不幸的是,这似乎不起作用,因为当我调用self.generic_fun(x,y)时,我收到一条错误消息,指出未定义全局名称x。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

以下表达式中的

x是参数,而不是函数(lambda)。

lambda x: self.list[-1].set(key,value)

您需要将lambda表达式赋值给变量并传递它。

function1 = lambda x: self.list[-1].set(key,value)
function2 = lambda y: self.d.set(key,value)
self.generic_func(function1, function2)

或者你可以传递lambda表达式:

self.generic_func(lambda x: self.list[-1].set(key,value),
                  lambda y: self.d.set(key,value))

如果您的意思是函数不带任何参数,请删除它们(x,y)。

self.generic_func(lambda: self.list[-1].set(key,value),
                  lambda: self.d.set(key,value))