any trick to allow anonymous code blocks in python?
Chris S.
chrisks at NOSPAMudel.edu
Sat Jun 26 01:09:03 EDT 2004
David Eppstein wrote:
> In article <ROydndnd54-eYUHdRVn_iw at comcast.com>,
> Doug Holton <insert at spam.here> wrote:
>
>
>>>b.OnClick = (lambda : sys.stdout("You clicked me"))
>>
>>Yeah, I didn't mention the lambda option. I was thinking about
>>designing a framework meant for beginners, and I'd rather stay away from
>>lambdas. I'm surprised no one is even proposing support for anonymous
>>code blocks in Python that support multiple lines, similar to what Ruby,
>>Java, and other languages have.
>
>
> Presumably the right (but non-Python) syntax for such a code block would
> be:
>
> def b.onClick():
> print "You clicked me"
>
> One reason for not adding this to Python would be the difficulty of
> determining where the expression for the def'd object ends and where the
> argument list for its definition begins. One could imagine working
> backwards from the colon but I don't think Python's parser can do that,
> and anyway if it's difficult for machines to parse it's also difficult
> for humans to read.
>
Plus there's little difference between that and:
def onClick(self):
print "You clicked me"
where this is a class method. It's redundant notation and contrary to
Python's "there should be one-- and preferably only one --obvious way to
do it" philosophy.
More information about the Python-list
mailing list