簡體   English   中英

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

[英]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 只能執行表達式並返回執行語句的結果,返回的是 語句

考慮使用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 f(x).
lambda x: f(x) and g(x) 

因為 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM