Understanding lambda in python and using it to pass multiple arguments

Understanding lambda in python and using it to pass multiple arguments

Why do you need to state both x and y before the 😕

Because a lambda is (conceptually) the same as a function, just written inline. Your example is equivalent to

def f(x, y) : return x + y

just without binding it to a name like f.

Also how do you make it return multiple arguments?

The same way like with a function. Preferably, you return a tuple:

lambda x, y: (x+y, x-y)

Or a list, or a class, or whatever.

The thing with self.entry_1.bind should be answered by Demosthenex.

I believe bind always tries to send an event parameter. Try:

self.entry_1.bind(<Return>, lambda event: self.calculate(self.buttonOut_1.grid_info(), 1))

You accept the parameter and never use it.

Understanding lambda in python and using it to pass multiple arguments

Why do you need to state both x and y before the :?

Because its a function definition and it needs to know what parameters the function accepts, and in what order. It cant just look at the expression and use the variables names in that, because some of those names you might want to use existing local or global variable values for, and even if it did that, it wouldnt know what order it should expect to get them.

Your error message means that Tk is calling your lambda with one argument, while your lambda is written to accept no arguments. If you dont need the argument, just accept one and dont use it. (Demosthenex has the code, I would have posted it but was beaten to it.)

Leave a Reply

Your email address will not be published. Required fields are marked *