Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #49510
| 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) |
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
Re: math functions with non numeric args MRAB <python@mrabarnett.plus.com> - 2013-06-30 20:12 +0100
csiph-web