learnpython.org - an online interactive Python tutorial
harrismh777 at charter.net
Sat Apr 23 23:10:47 EDT 2011
Steven D'Aprano wrote:
> If that's a "serious" flaw, it's a flaw shared by the vast majority of
> programming languages.
> As for the question of "consistency", I would argue the opposite: that
> auto-promoting strings to numbers arguably is useful, but that is what is
> inconsistent, not the failure to do so.
I see your point... but I'll push back just a little, in a minute...
> "one" + 1
> "[1, 2, 3]" + 
> "[2, 40, 10, 3]".sort()
Yes, maybe problems all. Again, I see the point of your argument,
and I do not necessarily disagree...
I've been giving this some more thought. From the keyboard, all I am
able to enter are character strings (not numbers). Presumably these are
UTF-8 strings in python3. If I enter the character string 57 then
python converts my character string input and returns an reference to
object 57. If I enter the keyboard character string 34567 then the
python interpreter converts my character string input into an object
(creates a new object) (34567) returning a reference to that object (a
type int). If I enter the keyboard character string 3.14 the python
interpreter creates a float object (converts my string into a float) and
returns a reference to the object. In any event, keyboard character
strings that just happen to be numbers, are converted into int or float
objects by the interpreter, from the keyboard, automatically.
My idea for consistency is this: since the interpreter converts int
to float, and float to imaginary (when needed), then it does (at least
in a limited way) type promoting. So, it is consistent with the input
methods generally to promote numeric string input to int --> float -->
imaginary, as needed, therefore it is also consistent to promote a
numeric string (that which I used to call a REXX number) into an int -->
float --> imaginary, as implied by the statement(s). I am not asking for
weak typing generally... nor am I thinking that all promotions are a
good thing... just numeric string to int --> float --> imaginary when it
makes sense. In any event, the programmer should be able to overide the
behavior explicitly. On the other hand, I do see your point regarding
... type promotions really would not cause any more confusion for
programmers who now know that int will be converted to float and use
that knowledge conveniently....
I do believe that explicit is better than implicit (generally)...
but not in this case. I am noticing a pattern in some of the responses,
and that pattern is that some folks would find this appealing if not
overtly convenient. The question IS, which I am not able to answer at
this point, whether the convenience would actually cause other
difficulties that would be worse...?
More information about the Python-list