为什么不喜欢内build函数?

我有这样一行:

filter(lambda x: x == 1, [1, 1, 2]) 

Pylint正在显示一个警告:

 W: 3: Used builtin function 'filter' 

这是为什么? 是一个列表理解的推荐方法?

当然,我可以重写这样的:

 [x for x in [1, 1, 2] if x == 1] 

我没有得到任何警告,但我想知道是否有这样的PEP?

Pylint经常聊天关于它不应该的东西。 您可以禁用.pylintrc文件中的警告。

这个页面http://pylint-messages.wikidot.com/messages:w0141表明问题在于filter和映射已被列表parsing所取代。;

在你的pylintrc文件中这样的一行会清除警告:

 disable=W0141 

这是为什么? 是一个列表理解的推荐方法?

在教程示例中推荐列表理解,其中指出

它更简洁可读。

以及大多数SO的Python List Comprehension Vs上的回答者。 映射 它在哪里

  1. 如果你每次定义lambda比使用filter 更有效率
  2. 如果函数是预先定义的,可能更具可读性 (并且效率相似)使用filter
  3. 如果你需要使用filtermap
    • map
    • 咖喱map ,或
    • 使用函数式编程

TL; DR:在大多数情况下使用列表理解

我遇到了同样的问题,无法弄清楚

为什么内置函数“input”不好。 我打算

禁用它:

pylint –bad-functions =“[map,filter,apply]”YOUR_FILE_TO_CHECK_HERE

一旦你喜欢这些设置:

 pylint --bad-functions="[map,filter,apply]" --some-other-supercool-settings-of-yours --generate-rcfile > test.rc 

确认您的设置在文件中,例如:

 cat test.rc | grep -i YOUR_SETTING_HERE 

之后,你可以在本地使用这个文件

 pylint --rcfile test.rc --your-other-command-line-args ... 

甚至可以将其用作默认的rc文件。 为此,我恳请你

 pylint --long-help