In python, lambda is actually a high-order function. for example,
f = lambda x, y : x if x > y else y
equals to:
def f(x, y):
if x > y:
return x
else:
return y
furtur more, consider we alreay hava a function named t with the following definiation:
def test(x, y):
if x > y:
return x
else:
return y
then,
f = lambda: test
equals to:
def f():
return test
so, we have the following results:
>>> f
<function <lambda> at 0x7f7faadc2e60>
>>> f()
<function test at 0x7f7faadc2b18>
>>> f()(2, 3)
3
Remember this, we can easily tell different formats lambda statements, for example,
args = {'x':2, 'y':3}
g = lambda: test()
h = lambda: test(**args)
i = (lambda:test)(**args)
j = (lambda:test)()(**args)
k = (lambda x,y: x if x>y else y)(**args)
You should alrady konw the values of g, h, i, j and k, right? if not, think for a second time that lambda is actually a high-order function.