【问题标题】:parameters in python built-in functions min() and sorted()python 内置函数 min() 和 sorted() 中的参数
【发布时间】:2018-01-04 11:05:49
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: python function sorting min


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      以下适用于 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 可以采用任意数量的位置参数,这是唯一的方法)。

      【讨论】:

      • @OP :这当然是正确的答案。编辑我的。
      • 谢谢,我正在寻找如何在谷歌上搜索这个 *,行为,但被卡住了。非常感谢您的解释。
      • @brunodesthuilliers 是的,它有一些简洁的功能,绝对值得一看 ;-)
      • @a_guest @brunodesthuilliers,伙计们。你知道网址吗,我们在python官方文档中哪里可以找到关于这个*的解释
      • @a_guest 你应该编辑你的答案以添加关于[, key, default] 部分的答案,这意味着这些是可选的(只有这种情况下的关键字,因为它们遵循*)args。
      猜你喜欢
      • 2011-04-29
      • 1970-01-01
      • 2023-03-27
      • 2011-05-13
      • 2014-01-30
      • 2015-11-21
      • 2013-06-17
      • 1970-01-01
      相关资源
      最近更新 更多