[Python-Dev] bool conversion wart?

Neal Becker ndbecker2 at gmail.com
Fri Feb 23 02:44:00 CET 2007


Mike Klaas wrote:

> On 2/22/07, Neal Becker <ndbecker2 at gmail.com> wrote:
> 
>> Well consider this:
>> >>>str (4)
>> '4'
>> >>>int(str (4))
>> 4
>> >>>str (False)
>> 'False'
>>
>> >>>bool(str(False))
>> True
>>
>> Doesn't this seem a bit inconsisent?
> 
> Virtually no python objects accept a stringified version of themselves
> in their constructor:
> 
>>>> str({})
> '{}'
>>>> dict('{}')
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
> ValueError: dictionary update sequence element #0 has length 1; 2 is
> required
>>>> str([])
> '[]'
>>>> list('[]')
> ['[', ']']
> 
> Python is not Perl.
> 
Except, all the numeric types do, including int, float, and complex.  But
not bool.  In fact, this is not just academic.  The fact that other numeric
types act this way leaves a reasonable expectation that bool will. 
Instead, bool fails in _the worst possible way_: it silently gives a _wrong
result_.



More information about the Python-Dev mailing list