访问传递给函数的 lambda 值 python

accessing lambda value passed to function python

当我在调用函数的同一行传递值时,我试图访问 lambda 函数的值。我可以获得该值的唯一方法是 return(f)。有没有办法访问之前的值并将其与其他值进行比较?

def func(f):
    return(f)

func(lambda x: x*2)(3)
6

你不能。 (3) 传递给 func() returns,因此 func 无法访问它。这是发生了什么:

def func(f):
    return f  # parenthesis unnecessary.
func(lambda x: x*2)(3)

其中,当返回 lambda 函数时,将变为:

(lambda x: x*2)(3)

即:

3*2  # 6

这样,您会看到该函数不与传递给 lambda 的参数交互。您无法直接访问它。

我仍然不确定您的用例 - 您是否正在尝试做这样的事情?

def func(f, *args):
  result = f(*args)
  # Do some simple comparison with the result of the lambda
  myValue = 8
  msg = "8 > %d" if 8>result else "8 <= %d"
  return msg % result

print(func(lambda x:x*2, 3))  # prints 8 > 6
print(func(lambda x:x*2, 5))  # prints 8 <= 10
print(func(lambda x:x**2, 3)) # prints 8 <= 9

如您所见,这样做需要更改 func 以接受 lambda 的参数以及 lambda 本身。