This does not work:
print((lambda : return None)())
But this does:
print((lambda : None)())
Why?
Because return
is a statement. Lambdas can only contain expressions .
lambda
functions automatically return an expression. They cannot contain statements. return None
is a statement and therefore cannot work. None
is an expression and therefore works.
Lambda can execute only expressions and return result of the executed statement, return is the statement .
Consider using or
and and
operators to short-circuit the result for more flexibility in the values which will be returned by your lambda. See some samples below:
# 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)
because lambda takes a number of parameters and an expression combining these parameters, and creates a small function that returns the value of the expression.
Remember a lambda
can call another function which can in turn return
anything (Even another 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
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.