Any other Python flaws?

Carsten Geckeler geckeler at gmx.net
Tue Jun 19 18:47:49 EDT 2001


On 18 Jun 2001, Martijn Faassen wrote:

> Carsten Geckeler <uioziaremwpl at spammotel.com> wrote:
> > On 14 Jun 2001, Martijn Faassen wrote:
> [snip]
> >> This may be considered a minor quibble; the mandatory use of () in
> >> case of multiple arguments to the % string interpolation operator:
> >>
> >> "%s" % "foo"
> >>
> >> "%s %s" % "foo", "bar" # doesn't work right
> >>
> >> "%s %s" % ("foo", "bar")
>
> > This has nothing to do with "mandatory" or optional.  This is a question
> > of operator precedence.  The "%" operator has higher precedence as the ","
> > operator, so grouping with (..) is necessary.
>
> Sure, so ( and ) is mandatory. :) I know it's due to operator
> precendence issues. Doesn't mean it's not something that doesn't bite
> people. The actually really weird case is the single element tuple,
> which you can instead write as '% foo'.

Are you annoyed that Python provides this simplification?  Surely not.

> But since single element tuples are a wart by themselves, this extra
> magic is necessary. Perhaps a language is possible where single
> element tuples actually are single elements, though that may introduce
> other warts.

So that's your point.  But then propose another way of making one-element
tuples.  BTW, I don't see "(1,)" as magic, more as simple given syntax.
Since the curly brackets {} are used for dictionaries, normal brackets []
for lists, there are only the parenthesis () left.  And since they are
used for grouping, this special case for one-element tuple is needed.
Although I admit that I doesn't look very nice, I don't see any
alternatives.

Cheers, Carsten
-- 
Carsten Geckeler:  geckeler at gmx dot net





More information about the Python-list mailing list