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