为什么不喜欢内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上的回答者。 映射 它在哪里
- 如果你每次定义
lambda
比使用filter
更有效率 - 如果函数是预先定义的,可能更具可读性 (并且效率相似)使用
filter
- 如果你需要使用
filter
和map
-
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