On 2/22/07, Neal Becker <[EMAIL PROTECTED]> wrote:
Mike Klaas wrote:
> On 2/22/07, Neal Becker <[EMAIL PROTECTED]> 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_.
i agree with mike; it would just be asking for trouble. (have you ever been
bitten by the Perl behavior where the string '0' is considered false? it's
a nasty, nasty problem to debug.)
neal, you may be confusing the concepts of "convert data from one type to
another" and "read the printed representation of data".
ben
_______________________________________________
Python-Dev mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe:
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com