Masklinn wrote:
On 19 Oct 2009, at 22:50 , Ben Finney wrote:
starwing <weasley_wx@qq.com> writes:
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. When the code is more complex than a single expression, it's already complex enough that defining it first and then referring to it makes for clearer code.
That sounds quite recursive. Is it a hard rule or are you allowed to write three consecutive statements or expressions in some cases?
The difference lies largely in whether or not you are bundling up that code and giving it to another piece of code to use. For myself, I don't actually agree it's a valid design rule - I think anonymous blocks have legitimate use cases (see Ars Technica's writeup of the Apple's new Grand Central Dispatch and C-level anonymous block system in OS X 10.6). However, for Python, the idea of having anonymous blocks runs headlong into the use of indentation for block delineation. You have to either come up with a non-indentation based syntax for the statements inside the anonymous blocks, essentially inventing a whole new language, or you have to embed significant whitespace inside an expression rather than only having it between statements. Nobody has come up with a solution to that mismatch which is superior to just naming the block and using a normal def statement to create it. Cheers, Nick. -- Nick Coghlan | ncoghlan@gmail.com | Brisbane, Australia ---------------------------------------------------------------