【问题标题】:TypeError: must use keyword argument for key functionTypeError:必须为键函数使用关键字参数
【发布时间】:2018-03-06 17:59:06
【问题描述】:

这似乎是一个语法错误。

这是正确的调用函数。

t.sort(key=lambda b: b.length // 2)

这里是函数

def sort(self, key=None):
    p=self.boxes
    p.sort(key)
    return

p 是类中的列表。我不确定如何正确排序。

【问题讨论】:

  • 你认为错误信息是什么意思?

标签: python list lambda key


【解决方案1】:

正如错误所说,您应该使用关键字参数传递key

def sort(self, key=None):
    self.boxes.sort(key=key)

(注意preturn是不必要的)

【讨论】:

  • 这是为什么?我还没有看到任何其他需要这样关键字的函数。
  • 对于一般的仅关键字参数,请参阅docs。至于 list.sort 具体来说,我的理解是 key 仅用于 kw 以防止与 cmp 意外混淆 - 一个为 Python 3 删除的旧参数。参见例如this answer。这说明了 kw-only args 的主要好处 - 它们强制调用者明确说明他们要传递的 arg,这有助于提高可读性和前向兼容性。
猜你喜欢
  • 1970-01-01
  • 2020-04-16
  • 1970-01-01
  • 2017-05-08
  • 2016-11-14
  • 1970-01-01
  • 1970-01-01
  • 2020-12-06
  • 2019-05-17
相关资源
最近更新 更多