Lambda inside lambda

2020-04-05 08:30发布

问题:

Just for curiosity. Discovered Lambdas a few days ago. I was jus wondering if something like that can be done:

(Tried on the interpret but none of my tries seemed to work)

p = lambda x: (lambda x: x%2)/2

There's no explicit purpose. I just did'nt find a satisfactory answer. I may have misunderstood Lambdas.

回答1:

You aren't actually calling the inner lambda:

p = lambda x: (lambda x: x%2)(x)/2

Note in Python 2 this example will always return 0 since the remainder from dividing by 2 will be either 0 or 1 and integer-dividing that result by 2 will result in a truncated 0.



回答2:

You can use an inner lambda to return another function, based on the outer parameters:

mul = lambda x: (lambda y: y * x)
times4 = mul(4)
print times4(2)


回答3:

(lambda x: x%2) is a function, and dividing a function by 2 doesn't make any sense. You probably want to call it and divide what the value it returned.



标签: python lambda