如果你像这样检查 Python 内置的
sorted()
函数的签名:import inspect
print(inspect.signature(sorted))
签名是:(iterable, key=None, reverse=False)
。
根据我对位置参数和可选参数的理解(此处链接不提供),似乎您可以提供一个iterable
参数,然后再提供一个key
参数,而无需为key
参数使用关键字key=
。但是,当传递一个key
参数时,您总是需要指定key=
。为什么会这样呢?
我知道如果您想要指定reverse=True
,但没有任何key
参数,那么您需要一个关键字来实现,但我不明白为什么在提供key
时还需要指定key=
。
sorted
和list.sort
曾经接受cmp
参数。当移除该参数后,将key
和reverse
设为关键字参数有助于过渡期间更清晰地报错,以便发现仍在尝试使用cmp
的代码。此外,这也使得未来对接口的更改更加容易,并且你不必记住参数的顺序。 - user2357112