18-08-2009 o 22:32:55 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.

In Python 1.x/2.x 'print' is a keyword-based statement, not a function
-- then you cannot use it in lambda (which in Python is limited to
single expressions, and statements are not allowed in it).

You can try using sys.stdout.write() instead.

I want to avoid using a def if possible.

But what for? Usualy def is more readable than lambda and it's not worth
to lose readibility just to save a few keystrokes.

Cheers,
*j

--
Jan Kaliszewski (zuo) <z...@chopin.edu.pl>
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to