On Tue, 20 Oct 2009 01:04:47 am Oleg Broytman wrote:
On Mon, Oct 19, 2009 at 09:33:06PM +0800, starwing wrote:
current lambda only support single line syntax. it's not very good.
This is where you've made an error. Single-line lambdas are good enough, and if you need more - just create a named function.
Oleg.
Actually, lambda isn't limited to a single line, but to a single expression, and expressions can go over multiple lines:
data = [1, 2, 3, 4] map(lambda n: ( ... n**3 - # comment goes here ... n**2 + ... n + 1), data) [2, 7, 22, 53]
http://docs.python.org/reference/expressions.html#lambda The only limitation is that the lambda syntax is limited to a single expression, which means you can't call statements. If your "anonymous code block" is more complicated than a single short expression, it's too complicated to be "obviously correct" just from looking at it, and so it should be documented and tested. The restriction on lambda forces people to move the code block into a named function, which has the happy consequence of encouraging documentation and testing. -- Steven D'Aprano