Paul Rubin wrote:
> "Fredrik Lundh" <[EMAIL PROTECTED]> writes:
> > a temporary factory function should be sufficient:
> >
> >     def digit(label, x, y):
> >         def callback():
> >             # print "BUTTON PRESS", label # debug!
> >             user_pressed(int(label))
> >         Button(label=label, command=callback).grid(column=x, row=y)
>
> Looking at the calculator program I wrote a while back (one of my
> first Python programs, written just to play with tkinter), I see that
> I actually did something like that for the buttons.  However, it also
> contained (in the other order):
>
>     unops = {'sqrt': math.sqrt,
>              'sin': math.sin,
>              'cos': math.cos,
>              'tan': math.tan,
>              'ln': math.log,
>              'log': lambda x: math.log(x)/math.log(10),
>              'clr x': lambda x: 0
>              }
>
>     binops = {'+': (lambda x,y: x+y),
>               '-': (lambda x,y: x-y),
>               '*': (lambda x,y: x*y),
>               '/': (lambda x,y: x/y),
>               '**': (lambda x,y: x**y)
>               }
>
> How would you refactor that, with no lambda?

Or, why would you want to refactor that ? The lambdas were used as the
quickest and the most straight forward way to have the solution back
then I believe. Refactoring is an aftermath(performance, frequent
change to the same module for feature changes etc.).
Without lambda, even the first version would force the programmer to
think more about how to factor it and it seems in this case, not
necessary and waste of precious programmer time.

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to