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

时间:2017-07-28 11:33:29

标签: python function sorting min

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

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

我想知道这种结构是什么意思*[,,这很奇怪,因为*args**kwargs很清楚,[,arg]也很清楚。 但是*[,很奇怪,这个参数意味着什么?

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

2 个答案:

答案 0 :(得分:3)

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

编辑:*部分在a_guest的答案中解释(nb:这仅适用于Python 3)

答案 1 :(得分:3)

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

sorted函数定义中的单个星(*)表示必须提供以下所有命名参数作为关键字参数("仅限关键字参数" ,请参阅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可以采用任意数量的位置参数,这是唯一的方法)。