我的一位同事正在使用内置的max函数(在 Python 2.7 上),他发现了一个奇怪的行为。
错误地,他没有使用关键字参数key(如key=lambda n: n
)对作为参数传递的列表进行预排序,而是:
>>> max([1,2,3,3], lambda n : n)
[1, 2, 3, 3]
他正在做文档中解释为:
如果提供了两个或更多位置参数,则返回最大的位置参数。,所以现在我很好奇为什么会发生这种情况:
>>> (lambda n:n) < []
True
>>> def hello():
... pass
...
>>> hello < []
True
>>> len(hello)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: object of type 'function' has no len()
我知道这没什么大不了的,但是如果有任何stackoverflowers可以解释这些比较是如何在内部进行的(或者指出我可以找到该信息的方向),我将不胜感激。:-)
先感谢您!