为什么 sorted() 的关键参数需要关键字参数

Why does sorted()'s key parameter require a keyword argument

如果您像这样检查 Python 的内置 sorted() 函数的签名:

import inspect
print(inspect.signature(sorted))

签名为:(iterable, key=None, reverse=False).

根据我对获取的位置参数和可选参数的理解 here,您似乎可以提供一个 iterable 参数,然后提供一个 key 参数,而无需关键字 key= 用于 key 参数。但是在传递 key 参数时,您始终需要指定 key=。这是为什么?

我知道如果你想指定 reverse=True,但没有任何 key 参数,你需要一个关键字,但我不明白你为什么需要在提供 key 时指定 key=

这是 Python issue 26729sorted.__text_signature__ 中的一个错误,它缺少 /* 来表明 iterable 是位置信息keyreverse 仅包含关键字。该补丁正在补丁审查中,分配给 Raymond Hettinger。补丁版本发布后,签名应显示为

(iterable, /, *, key=None, reverse=False)