How to create functors?

Rami Chowdhury rami.chowdhury at gmail.com
Tue Aug 18 16:45:50 EDT 2009


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 <rcdailey at gmail.com>  
wrote:

> On Aug 18, 3:31 pm, Duncan Booth <duncan.bo... at invalid.invalid> wrote:
>> Robert Dailey <rcdai... at 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)



More information about the Python-list mailing list