| Store | Cart

Extending Python Syntax with @

From: Kyler Laird <Kyl...@news.Lairds.org>
Thu, 11 Mar 2004 18:09:34 GMT
Richie Hindle <richie at entrian.com> writes:

>[Cameron]>> Whenever you feel like a lambda, define a named function; >[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)>...did I misunderstand?

Well, your solution depends on a global variable.  That's going to
get *really* ugly if we move beyond the trivial example given here.
There are other problems but they're apparently not obvious with 
that example.

How 'bout some non-working code to shine some more light on it?  (If
pressed, I should be able to come up with similar code that works!)

	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.

	map_im = foo.open('map.tif')
	map_translation = make_translation_function(map_im.get_GCPs, type='LSF')

	path_im = foo.open('path.tif')
	path_translation_i = make_translation_function(path_im.get_GCPs, type='LSF', invert=True)

	# Mark all points on map that are red in path.
	for (x, y) in all_red_pixels(path_im):
		(lon, lat) = path_translation_i(x, y)
		(x, y) = map_translation(lon, lat)
		map_im.putpixel((x, y), mark_val)

Now, let's pretend that this is part of a larger program that's doing lots
of things with, potentially, lots of images, and let's also say that we
allow user-defined/imported extensions to make_translation_function().
How are you going to make a *clean* solution using named functions?

--kyler

Recent Messages in this Thread
David MacQuigg Mar 10, 2004 09:01 pm
Wayne Folta Mar 10, 2004 09:24 pm
Jarek Zgoda Mar 10, 2004 09:26 pm
Jeff Epler Mar 10, 2004 09:31 pm
Ivan Voras Mar 10, 2004 09:49 pm
Erik Max Francis Mar 11, 2004 01:08 am
John Roth Mar 10, 2004 09:50 pm
Ben Finney Mar 10, 2004 10:19 pm
John Roth Mar 10, 2004 11:15 pm
Josiah Carlson Mar 12, 2004 05:08 pm
Y2KYZFR1 Mar 12, 2004 05:49 am
Max M Mar 12, 2004 09:59 am
John Roth Mar 12, 2004 12:05 pm
Heather Coppersmith Mar 11, 2004 02:05 am
Edward K. Ream Mar 10, 2004 11:02 pm
David MacQuigg Mar 11, 2004 12:40 am
Cameron Laird Mar 11, 2004 01:28 am
David MacQuigg Mar 11, 2004 02:44 am
Pierre Rouleau Mar 11, 2004 03:13 am
Christopher Koppler Mar 11, 2004 09:00 am
Isaac To Mar 11, 2004 01:54 am
Pierre Rouleau Mar 11, 2004 02:59 am
Christopher Koppler Mar 11, 2004 08:50 am
Nick Vargish Mar 11, 2004 02:28 pm
Peter Hickman Mar 11, 2004 02:50 pm
Cameron Laird Mar 11, 2004 03:24 pm
Peter Hickman Mar 12, 2004 09:50 am
John Roth Mar 12, 2004 12:07 pm
Peter Hickman Mar 12, 2004 12:19 pm
David MacQuigg Mar 11, 2004 08:05 pm
Roger Binns Mar 11, 2004 01:08 am
DH Mar 11, 2004 01:37 am
Roger Binns Mar 11, 2004 04:06 am
Steve Lamb Mar 11, 2004 01:43 am
Gustavo Niemeyer Mar 11, 2004 03:12 am
Paul McGuire Mar 11, 2004 03:17 am
Peter Maas Mar 11, 2004 12:15 pm
David MacQuigg Mar 11, 2004 04:35 pm
Peter Hansen Mar 11, 2004 05:01 pm
David MacQuigg Mar 11, 2004 05:57 pm
Ixokai Mar 14, 2004 05:17 am
Peter Maas Mar 11, 2004 08:42 pm
David MacQuigg Mar 11, 2004 11:44 pm
Raymond Hettinger Mar 11, 2004 10:15 pm
Paul Rubin Mar 11, 2004 11:24 pm
wmwd...@sneakemail.com ) (Greg Ewing (using news.cis.dfn.de) Mar 12, 2004 03:12 am
Bas Mar 12, 2004 08:07 pm
Peter Hansen Mar 12, 2004 10:17 pm
Donn Cave Mar 12, 2004 10:57 pm
Cameron Laird Mar 11, 2004 12:55 pm
Kyler Laird Mar 11, 2004 02:09 pm
Richie Hindle Mar 11, 2004 02:41 pm
David MacQuigg Mar 11, 2004 02:49 pm
Kyler Laird Mar 11, 2004 06:09 pm
David M. Cooke Mar 11, 2004 09:26 pm
Kyler Laird Mar 12, 2004 12:01 am
Myles Mar 12, 2004 12:05 am
John Roth Mar 11, 2004 02:37 pm
David MacQuigg Mar 11, 2004 03:57 pm
John Roth Mar 11, 2004 04:17 pm
David MacQuigg Mar 11, 2004 05:41 pm
John Roth Mar 11, 2004 06:03 pm
David MacQuigg Mar 11, 2004 09:24 am
Cameron Laird Mar 11, 2004 05:13 am
David MacQuigg Mar 11, 2004 08:42 am
Cameron Laird Mar 11, 2004 03:35 pm
Cameron Laird Mar 12, 2004 01:19 am
wmwd...@sneakemail.com ) (Greg Ewing (using news.cis.dfn.de) Mar 12, 2004 03:11 am
Messages in this thread

Previous post: backquote
Next post: backquote