Python 3K or Python 2.9?

Steven D'Aprano steve at REMOVE-THIS-cybersource.com.au
Wed Sep 12 23:09:27 EDT 2007


On Wed, 12 Sep 2007 19:40:04 -0700, TheFlyingDutchman wrote:

>>     >>> Foo.bar(foo, "spam")
>>     >>> foo.bar("spam")
> 
> That looks like a case of "There's more than one way to do it". ;) The
> first form is definitely consistent with the method declaration, so
> there's a lot to be said for using that style when teaching people to
> make classes -> send self, receive self.

I think it is a horrible thing to teach beginners. Would you teach them 
to write 1.__add__(1) instead of 1+1?

I think that beginners should be taught to write

instance.method(arguments)

and then only introduced to 

class.method(instance, arguments)

when they progress to needing to know what happens under the hood.



>> The latter two statements are equivalent. The 'instance.method(args)'
>> syntax is just sugar for 'Class.method(instance, args)'.
> 
> I think I saw where Guido Van Rossum had referred to something as
> "syntactic sugar" in some python.org page. I am not familiar with sugar
> as related to syntax. Is it being used as a synonym for "easier way of
> doing it"?

"Syntactic sugar" is not really well defined, it's a fuzzy concept, but 
in a nutshell it is special syntax made to "sweeten" the language by 
giving an easier way to write common tasks.

It's hard to find examples of syntactic sugar that everybody agrees are 
syntactic sugar, but I consider the following to be good (in the sense of 
useful, obvious and well-thought-out) examples:

alist[-1] for alist[len(alist)-1]

list comprehensions and generator expressions


Perhaps less attractive, but still very(?) useful, examples of syntactic 
sugar are decorators and the "X if C else Y" ternary operator.



-- 
Steven



More information about the Python-list mailing list