2009/10/19 Oleg Broytman <phd@phd.pp.ru>
On Mon, Oct 19, 2009 at 10:28:58PM +0800, starwing wrote:
> Oleg Broytman ??????:
>>    Single-line lambdas are good enough,
>> and if you need more - just create a named function.
>>
> BUT, why we need a name? just to process something or make decide,
> sometimes code itself is enough.

  A multiline function is certainly not a simple piece of code; it
requires documentation - docstring, comments - and the name is a part of
the documentation.



Having used languages that allow multiline anonymous functions (C#, Javascript) I have to say that they *can* improve the readability of code. Being forced to define functions ahead of where they belong in the logical flow of the program is not a feature of Python but a restriction.

To dogmatically assert that multiline anonymous functions are *necessarily* less clear simply does the reputation of Python damage to those who use them already in other languages and know that this isn't true.

I accept that it is a necessary restriction in Python (basically impossible to find a clean syntax that fits in with indentation for block structure) but to pretend that it is anything other than a restriction insults the intelligence of your audience.

Michael

 
> and, is there performance problems when you define a inner function in
> another function? (that's, that function will define every time you call
> the function or not?)

  A lambda, like an inner function, is recreated every time, so it's
certainly no better than a named function.
  You should profile your program to prove there is really a performance
degradation. And if there is - create a global function instead.

Oleg.
--
    Oleg Broytman            http://phd.pp.ru/            phd@phd.pp.ru
          Programmers don't die, they just GOSUB without RETURN.
_______________________________________________



--
http://www.ironpythoninaction.com/