Misleading error message of the day
Jean-Michel Pichavant
jeanmichel at sequans.com
Thu Dec 8 10:03:38 EST 2011
Roy Smith wrote:
> I just spent a while beating my head against this one.
>
> # Python 2.6
>
>>>> a, b = 'foo'
>>>>
> Traceback (most recent call last):
> File "<stdin>", line 1, in <module>
> ValueError: too many values to unpack
>
> The real problem is that there's too *few* values to unpack! It should
> have been
>
> a, b = 'foo', 'bar'
>
> I understand why it's generating the exception it does (the string is an
> iterable), but man, did that message throw off my thought processes and
> lead me down some totally bogus debugging paths.
>
> It's an unusual case to want to unpack a string. Maybe the message
> should changed to "too {many, few} values to unpack (are you sure you
> wanted to unpack a string?)" if the RHS is a basestring?
>
string are iterable, considering this, the error is correct.
Values to unpack in 'foo' are 'f', 'o', 'o'
> a,b,c = 'foo'
> print a,b,c
f o o
JM
More information about the Python-list
mailing list