PyLint W0108:Lambda 可能不是必需的(不必要的 lambda)

Pun*_*cky 9 python pylint python-3.x

pylint 正在为我下面的代码返回以下消息:

data.py:125:30: W0108: Lambda 可能不是必需的(不必要的 lambda)

in_p = ', '.join(list(map(lambda x: "'{}'".format(x), data)))
Run Code Online (Sandbox Code Playgroud)

为什么这里不需要 lambda 以及如何重构它?

che*_*ner 17

"'{}'".format已经是一个函数;您的 lambda 表达式定义了一个函数,除了接受一个参数并将其传递给另一个函数之外,什么都不做。你可以简单地写

in_p = ', '.join(list(map("'{}'".format, data)))
Run Code Online (Sandbox Code Playgroud)

有些人可能更喜欢在这里使用列表理解:

in_p = ', '.join(["'{}'".format(x) for x in data])
Run Code Online (Sandbox Code Playgroud)

为了可读性,使用临时变量也可能是值得的。

quote_it = "'{}'".format
in_p = ', '.join(list(map(quote_it, data)))
# in_p = ', '.join([quote_it(x) for x in data])
Run Code Online (Sandbox Code Playgroud)

  • 我认为列表理解语法更简洁一些,它们“通常”比 `map` 更受欢迎。`', '.join(map("'{}'".format, data))` 也可以,但考虑到您将生成器而不是列表传递给 `join`,效率略低。 (2认同)