我正在py.checkio.org上做任务,我遇到了一个练习来编写我自己的函数min()
和max()
。
我已在official documentation阅读了有关此功能的文档,我对所描述的参数感到惊讶,它们看起来像:min(iterable, *[, key, default])
我想知道这种结构是什么意思*[,
,这很奇怪,因为*args
和**kwargs
很清楚,[,arg]
也很清楚。
但是*[,
很奇怪,这个参数意味着什么?
P.S sorted() function有一个奇怪的参数星号:sorted(... *, ...)
这是什么意思?
答案 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而是文档目的)但我认为开发人员想表达同样的事情,即你必须提供这些参数作为关键字参数(因为min
和max
可以采用任意数量的位置参数,这是唯一的方法)。