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

1 投票
1 回答
799 浏览
提问于 2025-04-30 23:42

我对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 个回答

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))

撰写回答