Ben Finney wrote: > "Gregory Petrosyan" <[EMAIL PROTECTED]> writes: > > > I often make helper functions nested, like this: > > > > def f(): > > def helper(): > > ... > > ... > > > > is it a good practice or not? > > You have my blessing. Used well, it makes for more readable code.
I'm not sure it's in general more readable; I typically use nested functions for closures only, not helper functions, so I'd read the code twice to check if it's a closure and if not why might have been defined locally. I prefer to define helpers at the module level, often making them 'private' by prepending their name with a single underscore. > > What about performance of such constructs? > > What about it? Set up some examples maningful for your situation, with > and without such constructs, and use the profiler to find out. It shouldn't come as a surprise if it turns out to be slower, since the nested function is redefined every time the outer is called. If you actually call the outer function a lot, you'd better profile it. George -- http://mail.python.org/mailman/listinfo/python-list