私の同僚の 1 人が (Python 2.7 で) 組み込みのmax関数を使用していて、奇妙な動作を発見しました。
誤って、キーワード引数key (のようにkey=lambda n: n
) を使用して、パラメーターとして渡されたリストを事前に並べ替える代わりに、彼は次のようにしました。
>>> max([1,2,3,3], lambda n : n)
[1, 2, 3, 3]
彼は、ドキュメントで次のように説明されていることをしていました。
2 つ以上の位置引数が指定されている場合、最大の位置引数が返されます。、だから今、私はこれがなぜ起こるのか興味があります:
>>> (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のいずれかが内部でこれらの比較がどのように行われるかを説明できれば幸いです (または、その情報を見つけることができる方向に私を向けてくれます)。:-)
前もって感謝します!