Kyler Laird <Kyler at news.Lairds.org> writes:
> Richie Hindle <richie at entrian.com> writes:> > [Kyler]> >> How do you cleanly do that?> >> foo = range(-10, 10)> >> my_op = lambda x: float(x) / max(map(abs, foo))> >> bar = map(my_op, foo)> > >foo = range(-10, 10)> >def my_op(x):> > return float(x) / max(map(abs, foo))> >bar = map(my_op, foo)> > Well, your solution depends on a global variable.
foo ? my_op ?
Doesn't the same apply to the lambda example ?
> def make_translation_function(GCPs, type, invert=False):> if type == 'LSF' and len(GCPs) < 12:> # Do lots of time-consuming magic to calculate A, B, ...> return(> lambda x, y: (> x * A + y * B +> x * y * C +> ...,> x * G + y * H +> x * y * I +> ...> )> )> elif ... # Repeat lots of times for variations.
Isn't this just a more detailed example of the same thing ?
With a similar solution :
def make_translation_function(GCPs, type, invert=False):
if type == 'LSF' and len(GCPs) < 12:
# Do lots of time-consuming magic to calculate A, B, ...
def translation_fn(x, y):
return (
x * A + y * B +
x * y * C +
...,
x * G + y * H +
x * y * I +
...
)
return translation_fn
elif ... # Repeat lots of times for variations.
Quick variation using working code:
def makefn(a, b):
A = a*3
B = b * 2
def my_op(x, y):
return (x*A + y*B, (x+A)*(y+B))
return my_op
x = makefn(1, 1)
print x(2, 2)
Regards, Myles.