Peter Hansen wrote: > Dave Benjamin wrote: > >> def add_thingy(): >> def func(thingy_id): >> print 'got thingy id:', thingy_id >> def funnc(doodad_id): >> print 'got doodad id:', doodad_id >> def func(thingy_doodad): >> print 'thingy doodad created, froobling...' >> frooble(thingy_doodad) >> print 'froobling complete' >> with_new_thingy_doodad(thingy_id, doodad_id, func) >> with_next_doodad_id(func) >> with_next_thingy_id(func) >> >> This function now has an infinite loop. Can you spot the reason? > > Not offhand, and to be completely honest, the original with the longer > names was equally unreadable. I doubt this is the best way to do > whatever the heck it is that this is supposed to do.
I agree. I think both are difficult to read. I find the first version that I originally posted (using an imaginary anonymous function syntax) much easier to understand. I think I've made it pretty clear what this is supposed to do in my earlier post to Fredrik, delineating each step of the communication process. If you have a better way to do this, I'd certainly like to see it. > Oh, and while I was typing my eyes fell on "funnc" misspelled above. > Presumably that's your loop... Yes, precisely. And because of a typo, the wrong callback gets passed, causing it to use the same callback over and over. With anonymous functions, there would be nothing to name, and therefore, nothing to misspell. > Spelling "func" as "_" would tend to avoid this as well, unless you have > a keyboard that repeats keys accidentally. Hrmmm. Well, it is less to type. Dave -- http://mail.python.org/mailman/listinfo/python-list