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

Kir*_* KN -5 python

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

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

Ana*_*mar 12

文档 -

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
Run Code Online (Sandbox Code Playgroud)

请注意的类型名称test类的对象instance,这就是为什么t > 5False.

  • @ 2016rshah是什么让你得出结论''str'>'int'`**不是**按字母顺序排列? (2认同)

Vad*_*aev 8

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

>>> "a" > 1000
True
Run Code Online (Sandbox Code Playgroud)

在Python3中它实际上是固定的,它们现在是无法比拟的(因为实际上没有办法比较42和"狗").