[Python-talk] Reflections on tuples, September 2005, 2 of 2
sconce at in-spec-inc.com
Mon Sep 26 14:38:20 EDT 2005
On Fri, 23 Sep 2005 22:41:43 -0400
Python <python at venix.com> wrote:
> I think trailing commas are tolerated rather than encouraged.
Agreed. By you, by me, by the official language description, as
well as by actual practice.
> Only the single element tuple is forced to have a trailing comma.
> Allowing a trailing comma makes it easier to extend sequence later.
Yes. Especially if the sequence spans lexical lines, e.g.
famous_first_words = (
'Four score and seven years ago',
'When in the course of human events',
'Friends, Romans, countrymen',
> ... http://python.org/doc/2.3.5/ref/exprlists.html (*)
> Just being nit-picky, but if you are dealing with a class, it is
> sometimes easier when you are precisely right.
I agree. We should never hide what is precisely right, nor fail to
point out how to find out what is precisely right. That means that
we need to portray things like this correctly. Perhaps:
"This tuple/comma business seems to give EVERYONE trouble, at the
beginning and later on too. Approaching it in the following way
will help you be confused less often than most people while you
learn and use Python(**), although it's only 95% accurate".(***)
Thanks for the reminder, Lloyd.
(*) Python Reference Manual, Section 5.12, Expression Lists:
An expression list containing at least one comma yields a
tuple. The length of the tuple is the number of expressions
in the list. The expressions are evaluated from left to right.
The trailing comma is required only to create a single
tuple (a.k.a. a singleton); it is optional in all other cases.
A single expression without a trailing comma doesn't create a
tuple, but rather yields the value of that expression. (To
create an empty tuple, use an empty pair of parentheses: ().)
(Note that parentheses are mentioned, but only in the last
(**) "Most people" includes me - I still stumble over parentheses.
(***) Viewing it this way leaves the empty tuple as the exceptional
case. I think that will be easier for students than teaching
them parentheses as I have been doing, and then helping them
discern tuples in expressions such as these:
a, b = b, a
breakfast = 'spam', 'catsup'
meat, vegetable = breakfast
My old way made exceptions of these everyday cases, turning
things on their head. What I'd been saying here was that the
parentheses were optional. 100% accurate under the letter of the
law, perhaps, but impermissible under the spirit, since it plants
the seeds for stumbles.
> On Fri, 2005-09-23 at 18:00 -0400, Bill Sconce wrote:
> > A real clarification! ... We were discussing how parentheses
> > seem to have two different, confusing uses ... Lloyd said, almost
> > in passing "No, it's not parentheses which signify a tuple. It's
> > COMMAS."
More information about the Python-talk