2017-07-28 63 views
3

我在做py.checkio.org上的任务,我遇到了一个练习来编写我自己的函数min()max()在python内置函数中的参数min()和sorted()

我在official documentation阅读有关此功能的文档,我很惊讶介绍的参数,它们看起来像:min(iterable, *[, key, default])

我想请问这个建筑*[,意思是,这是奇怪的,因为*args**kwargs很清楚,也是[,arg]很清楚。 但是*[,很奇怪,这个参数是什么意思?

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

回答

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,而是一个文档目的),但我认为开发人员想要表达同样的事情,即你必须提供这些参数作为关键字参数(因为min a nd max可以采取任意数量的位置参数,这是唯一的方法)。

+0

我应该真正开始和学习Python 3的xD –

+0

@OP:这当然是正确的答案。编辑我的。 –

+0

谢谢,我正在寻找方式,我怎么可以谷歌这个*,行为,并得到stucked。非常感谢你的解释。 –

3

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

编辑:*部分在a_guest的答案解释(注:这是Python的3只)