math functions with non numeric args
MRAB
python at mrabarnett.plus.com
Sun Jun 30 15:12:19 EDT 2013
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'
More information about the Python-list
mailing list