Neal Becker ndbecker2 at gmail.com
Tue Dec 2 20:56:00 CET 2008

Robert Kern wrote:

> Neal Becker wrote:
>> Arnaud Delobelle wrote:
>>> Neal Becker <ndbecker2 at gmail.com> writes:
>>>> I noticed in some profiling, that it seems that:
>>>> def Func ():
>>>>   def something():
>>>>     ...
>>>> It appears that if Func is called many times, this nested func
>>>> definition will cause significant overhead.  Is this true?  I guess
>>>> I've become accustomed to decent compilers performing reasonable
>>>> transformations and so have tended to write code for clarity.
>>> If something() can be defined outside Func(), how is it clearer to
>>> define it inside?
>> If it's only used inside.
> 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.

I'm using the inner function to prevent pollution of the global namespace.  Local variables also have this attribute.  Code is easier to understand when it is written with the greatest locality - so you can see immediately that the inner function isn't used somewhere else.

More information about the Python-list mailing list