访问传递给函数的 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 本身。
当我在调用函数的同一行传递值时,我试图访问 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 本身。