On Mon, 01 Dec 2008 18:11:16 -0600, Robert Kern wrote about nested functions:
> I, for one, find that significantly less clear. I only expect functions > to be defined inside of functions if they are going to use lexical > scoping for some reason. If I read your code, I'd probably waste a good > five minutes trying to figure out what part of the local scope you were > using before I would conclude that you just did it because you thought > it looked better. Hah, I bet you aren't an ex-Pascal programmer :-) Speaking as one, it took me a long time to teach myself not to bother nesting functions for the purpose of avoiding scoping clashes. I'd write something like this: def parrot(): def colour(): return "Blue" return "Norwegian %s" % colour() def cardinal(x): def colour(): return "crimson" return "Cardinal Fang wears a %s robe" % colour() Except of course that's a trivially silly example. (For the sake of the argument, let's pretend the two functions colour() do actual calculations.) These days, I'd write them something like this: def parrot_colour(): return "Blue" def cardinal_colour(): return "crimson" def parrot(): return "Norwegian %s" % parrot_colour() def cardinal(x): return "Cardinal Fang wears a %s robe" % cardinal_colour() These days, almost the only time I use nested functions is for function factories. -- Steven -- http://mail.python.org/mailman/listinfo/python-list