Returning values from a lambda

John McMonagle johnmc at velseis.com.au
Thu Nov 15 21:07:05 EST 2001


William Tanksley wrote:

> On Fri, 16 Nov 2001 10:36:06 +1000 (EST), John McMonagle wrote:
> 
>>I wish to return values from a lambda function which is bound to the
>>Tkinter button command option.  For example,
>>
> 
> Wait a second.  You don't want to return values; you want to modify
> variables.  There's a HUGE difference; lambdas can do the first, but they
> don't support any of the syntax to do the second.
> 
> The solution is to not use a lambda.  Just define a function which
> modifies the variables you need, and pass that function's name in place of
> the lambda.


But I need to use a lambda in order to pass arguments to the function.


> 
> 
>>def operations(a,b):
>> return a+b, a*b
>>
> 
> def operations(a,b):
>    x = a+b
>    y = a*b
> 


Indeed I could do it like that, but I would need to define globals for x 
and y.  Can this be done without using globals ?

>>from Tkinter import *
> 
>>root = Tk()
>>btn = Button(root, text='Press Me', command=lambda a=2, b=5: operations(a,b))
>>btn.pack()
>>
> 
> With the function I've defined, things should work.
> 
> 
>>John
>>
> 






More information about the Python-list mailing list