A small inconsistency in syntax?
sholden at holdenweb.com
Thu Oct 25 17:22:23 CEST 2001
"Michael Abbott" <michael at rcp.co.uk> wrote in message
news:Xns91459674D7271michaelrcpcouk at 188.8.131.52...
> It seems to me that there's a little inconsistency in assigning to tuples:
> >>> (x,) = ()
> Traceback (most recent call last):
> File "<stdin>", line 1, in ?
> ValueError: unpack tuple of wrong size
> Yes, that's what I expect.
> >>> () = ()
> SyntaxError: can't assign to ()
> Eh? Why not? It's just a matter of checking that the right hand side
> really is an empty tuple...
Oh, no it isn't. The best parallel I can think of is writing
>>> 2 = 34
Traceback (SyntaxError: can't assign to literal
although in your case you are trying to assign to a constructor rather than
> I actually hit this in some code, where I wrote:
> time, status, () = myobject.read()
> where I happen to know that that in this particular case my object will
> return an empty tuple in its third argument.
> Ok, so it's easy enough for me to write
> time, status, _ = myobject.read()
> instead, so I'm grumbling about trivia here.
Or, if you really don't want to do that, how about
time, status = myobject.read()[:2]
More information about the Python-list