max()的行为与字符串参数?

时间:2015-06-26 15:16:15

标签: python

  1. maximum = max(1, 1.25, 3.14, 'a', 1000) - 为什么要给'a'作为答案?不应该'a'转换为ASCII并进行检查吗?

  2. maximum = max(1, 2.15, "hello")"hello"作为答案。这个答案是怎么来的?

2 个答案:

答案 0 :(得分:12)

来自documentation -

  

CPython实现细节:除了数字之外的不同类型的对象按其类型名称排序;不支持正确比较的相同类型的对象按其地址排序

因此str始终大于int

更多示例 -

>>> class test:
...     pass
... 
>>> t = test()
>>> 'a' > 5
True
>>> t > 'a'
False
>>> type(t)
<type 'instance'>
>>> t > 10
False
>>> type(True)
<type 'bool'>
>>> True > 100
False
>>> False > 100
False

请注意test类'对象的类型名称为instance,这就是t > 5False的原因。

答案 1 :(得分:8)

因为Python 2中的字符串总是大于数字。

>>> "a" > 1000
True

在Python3中它实际上是修复,它们现在是无法比拟的(因为实际上没有办法比较42和“狗”)。