python 内置函数 min() 和 sorted() 中的参数

parameters in python built-in functions min() and sorted()

我正在 py.checkio.org 上完成任务,我遇到了编写自己的函数的练习 min()max()

我在 official documentation 中阅读了有关此函数的文档,我对描述的参数感到惊讶,它们看起来像:min(iterable, *[, key, default])

我想知道*[,这个结构是什么意思,很奇怪,因为*args**kwargs是明确的,[,arg]也是明确的。 但是*[,很奇怪,这个参数是什么意思?

P.S sorted() function 有奇怪的参数星号:sorted(... *, ...) 什么意思?

[, key, default] 部分不是 Python 语法,它是表示可选部分(此处为可选参数)的通用编程语言语法语法。

编辑:* 部分在 a_guest 的回答中进行了解释(注意:这仅适用于 Python 3)

以下适用于 Python 3(OP 链接到的)。


sorted denotes that all following named parameters must be supplied as keyword arguments ("keyword-only arguments", see PEP 3102)函数定义中的单星(*)。这意味着以下将不起作用:

>>> sorted([1, 2, 3], lambda x: x)
[...]
TypeError: must use keyword argument for key function

相反,您必须通过关键字参数提供这些参数:

>>> sorted([1, 2, 3], key=lambda x: x)
[1, 2, 3]

我不完全确定 , *[, key, default] 语法应该表示什么(它无效 Python 但文档目的)但是我认为开发人员想要表达同样的事情,即你必须提供这些参数作为关键字参数(因为 minmax 可以采用任意数量的位置参数,这是唯一的方法)。