为什么 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 26729,sorted.__text_signature__
中的一个错误,它缺少 /
和 *
来表明 iterable
是位置信息key
和 reverse
仅包含关键字。该补丁正在补丁审查中,分配给 Raymond Hettinger。补丁版本发布后,签名应显示为
(iterable, /, *, key=None, reverse=False)
如果您像这样检查 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 26729,sorted.__text_signature__
中的一个错误,它缺少 /
和 *
来表明 iterable
是位置信息key
和 reverse
仅包含关键字。该补丁正在补丁审查中,分配给 Raymond Hettinger。补丁版本发布后,签名应显示为
(iterable, /, *, key=None, reverse=False)