[英]Why can't I use “return” in lambda function in python?
這不起作用:
print((lambda : return None)())
但這確實:
print((lambda : None)())
為什么?
因為return
是一個語句。 Lambda只能包含表達式。
lambda
函數會自動返回一個表達式。 它們不能包含語句。 return None
是一個語句,因此無法工作。 None
是一個表達式,因此有效。
因為 lambda 接受許多參數和組合這些參數的表達式,並創建一個返回表達式值的小函數。
見: https : //docs.python.org/2/howto/functional.html?highlight=lambda#small-functions-and-the-lambda-expression
記住一個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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.