Lambda expressions are, I believe, syntactically limited to a single expression -- no statements, like 'print' is in Python 2.x.

If you are strongly against just defining a function, you might have to use a trick to get around it -- this page (http://p-nand-q.com/python/stupid_lambda_tricks.html) has some suggestions.

On Tue, 18 Aug 2009 13:32:55 -0700, Robert Dailey <rcdai...@gmail.com> wrote:

On Aug 18, 3:31 pm, Duncan Booth <duncan.bo...@invalid.invalid> wrote:
Robert Dailey <rcdai...@gmail.com> wrote:
> Hello,

> I want to simply wrap a function up into an object so it can be called
> with no parameters. The parameters that it would otherwise have taken
> are already filled in. Like so:

>       print1 = lambda: print( "Foobar" )
>       print1()

> However, the above code fails with:

>   File "C:\IT\work\distro_test\distribute_radix.py", line 286
>     print1 = lambda: print( "Foobar" )
>                          ^
> SyntaxError: invalid syntax

> How can I get this working?

def print1():
    print "Foobar"

It looks like in your version of Python "print" isn't a function. It always
helps if you say the exact version you are using in your question as the
exact answer you need may vary.

I'm using Python 2.6. And using the legacy syntax in the lambda does
not work either. I want to avoid using a def if possible. Thanks.



--
Rami Chowdhury
"Never attribute to malice that which can be attributed to stupidity" -- Hanlon's Razor
408-597-7068 (US) / 07875-841-046 (UK) / 0189-245544 (BD)
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to