为什么我不能在python中的lambda函数中使用“return”?

时间:2016-05-04 09:56:44

标签: python lambda

这不起作用:

print((lambda :  return None)())

但这样做:

print((lambda :  None)())

为什么?

5 个答案:

答案 0 :(得分:14)

因为return是一个陈述。 Lambdas can only contain expressions

答案 1 :(得分:6)

lambda函数会自动返回表达式。它们不能包含语句。 return None是一个声明,因此无法工作。 None是一个表达式,因此有效。

答案 2 :(得分:4)

因为lambda采用了许多参数和一个组合这些参数的表达式,并创建了一个返回表达式值的小函数。

请参阅:https://docs.python.org/2/howto/functional.html?highlight=lambda#small-functions-and-the-lambda-expression

答案 3 :(得分:3)

Lambda只能执行语句并返回执行语句的结果,结果就是表达式。

考虑使用orand运算符来获得lambda返回的值的更多灵活性。请参阅以下一些示例:

# return result of function f if bool(f(x)) == True otherwise return g(x)
lambda x: f(x) or g(x) 

# return result of function g if bool(f(x)) == True otherwise return False.
lambda x: f(x) or g(x) 

答案 4 :(得分:0)

请记住,lambda可以调用另一个函数,该函数又可以return进行任何操作(甚至是另一个lambda

# Does what you are asking... but not very useful
return_none_lambda = lambda : return_none()
def return_none():
    return None

# A more useful example that can return other lambdas to create multipier   functions
multiply_by = lambda x : create_multiplier_lambda(x)
def create_multiplier_lambda(x):
    return lambda y : x * y

a = multiply_by(4)
b = multiply_by(29)

print(a(2)) # prints 8
print(b(2)) # prints 58