Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #49510

Re: math functions with non numeric args

Date 2013-06-30 20:12 +0100
From MRAB <python@mrabarnett.plus.com>
Subject Re: math functions with non numeric args
References <CAPrcKXLzK1A=y6B6Z5srroT5tnyd1kMO43GS=2mxGpvtxK73xQ@mail.gmail.com> <51D07EC3.7030307@gmail.com>
Newsgroups comp.lang.python
Message-ID <mailman.4039.1372619537.3114.python-list@python.org> (permalink)

Show all headers | View raw


On 30/06/2013 19:53, Andrew Berg wrote:
> On 2013.06.30 13:46, Andrew Z wrote:
>> Hello,
>>
>> print max(-10, 10)
>> 10
>> print max('-10', 10)
>> -10
>>
>> My guess max converts string to number bye decoding each of the characters to it's ASCII equivalent?
>>
>> Where can i read more on exactly how the situations like these are dealt with?
> This behavior is fixed in Python 3:
>
>>>> max('10', 10)
> Traceback (most recent call last):
>    File "<stdin>", line 1, in <module>
> TypeError: unorderable types: int() > str()
>
> Python is strongly typed, so it shouldn't magically convert something from one type to another.
> Explicit is better than implicit.
>
It doesn't magically convert anyway.

In Python 2, comparing objects of different types like that gives a
consistent but arbitrary result: in this case, bytestrings ('str') are
greater than integers ('int'):

 >>> max('-10', 10)
'-10'
 >>> max('10', -10)
'10'

Back to comp.lang.python | Previous | Next | Find similar | Unroll thread


Thread

Re: math functions with non numeric args MRAB <python@mrabarnett.plus.com> - 2013-06-30 20:12 +0100

csiph-web