关于lambda:如何在python中将一个函数传递给另一个函数

How to pass one function to another in python

我对Python比较陌生,我想知道是否可以将一个函数传递给另一个函数。我有一些功能,基本上是一样的,比如:

1
2
3
4
if(#some condition):
  #do something
else:
  #do something else

我想做的是这样的事情:

1
2
3
4
5
6
7
8
9
10
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未定义。有什么想法吗?


在下面的x表达是不是函数参数(λ)。

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

你需要的assign到lambda表达是可变和通行证。

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

或者你可以通自己的表达:λ

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

如果你不带任何可能的函数中的参数,其中(x,y)。

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