我对python比较陌生,我想知道是否可以将一个函数传递给另一个函数。我有一些功能,基本上做同样这样想:如何将一个函数传递给另一个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
未定义。有任何想法吗?
可能重复的[与参数传递函数在Python另一个函数?](http://stackoverflow.com/questions/803616/passing-functions-with-arguments-to-another-function-in- python) – Paul 2014-11-01 02:23:55
在'calls_generic_func'中,一行中的lambda表达式就像这样简单地被丢弃。它没有定义x或y,这可能是为什么'self.generic_func(x,y)'失败。 'fun = lambda x:x * x'等价于'def fun(x):(新的缩进行)return x * x'基本上'lambda'允许你内联写一行函数,因为'def'不允许你这样做(不像javascript的'function()') – Paul 2014-11-01 02:29:28