On Thu, Dec 8, 2011 at 1:42 PM, Roy Smith <r...@panix.com> wrote: > (some, > very, > long, > list, > of, > variable, > names, > to, > get, > the, > stuff, > unpacked, > into) = function_that_should_return_a_14_tuple() > > raises > > ValueError: too many values to unpack > > Quick, what's the bug? Did I forget a variable on the LHS, or is my function > returning more things than it should? I know it's supposed to be 14, but I > don't know which side is wrong. Had it said "... expected 13, got 14", I > would know immediately. >
If the RHS was a tuple or a list, yes you could know immediately. But unpacking works with any iterable, so it probably doesn't special-case lists and tuples. Iterables don't have a size- they just keep going until StopIteration is raised. So in EVERY SINGLE CASE, you would get "expected n args, got n+1" even if the iterable would return 24 items instead of 14, or would never stop returning items. > Error messages should be as explicit as possible. It's just like bug > reports. The basic mantra of a bug report is: > > 1) This is what I did > > 2) This is what I expected to happen > > 3) This is what I observed happen > > 4) This is how what I observed differed from what I expected > > Saying, "expected X, got Y" is more explicit than "got too many" > > > -- > http://mail.python.org/mailman/listinfo/python-list -- http://mail.python.org/mailman/listinfo/python-list