为什么可以';t我使用“;return";在python中的lambda函数中?

为什么可以';t我使用“;return";在python中的lambda函数中?,python,lambda,Python,Lambda,这不起作用: print((lambda : return None)()) 但这确实: print((lambda : None)()) 为什么?因为return是一条语句。Lambdas.lambda函数自动返回表达式。它们不能包含语句returnnone是一条语句,因此无法工作None是一个表达式,因此可以工作。因为lambda接受许多参数和组合这些参数的表达式,并创建一个返回表达式值的小函数 请参阅:Lambda只能执行并返回已执行语句的结果,返回值为 考虑使用或和和运算符使结果

这不起作用:

print((lambda :  return None)())
但这确实:

print((lambda :  None)())

为什么?

因为
return
是一条语句。Lambdas.

lambda
函数自动返回表达式。它们不能包含语句
returnnone
是一条语句,因此无法工作
None
是一个表达式,因此可以工作。

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

请参阅:

Lambda只能执行并返回已执行语句的结果,返回值为

考虑使用
运算符使结果短路,以使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 f(x).
lambda x: f(x) and g(x) 

请记住,
lambda
可以调用另一个函数,而该函数反过来可以
返回
任何内容(甚至是另一个
lambda


你为什么要这么做?你有一个具体的例子可以帮助我们吗?我试着给出一个最简单的lambda函数的教育性例子-空lambdagreat,对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