Почему Pylint не любит встроенные функции?
у меня есть такие строки:
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]
и я не получаю никаких предупреждений, но мне было интересно, есть ли бодрость духа для этого?
3 ответов:
Pylint часто болтает о вещах, она не должна. Вы можете отключить это предупреждение в .файл pylintrc.
эта страница http://pylint-messages.wikidot.com/messages:w0141 указывает на то, что проблема заключается в том, что фильтр и карта были заменены списками понимания.
такая строка в вашем файле pylintrc успокоит предупреждение:
disable=W0141
почему это? является ли понимание списка рекомендуемым методом?
понимание списка рекомендуется в учебник указано, что
это более лаконично и читабельно.
и большинство ответчиков на SO-х Понимание Списка Python Vs. Map здесь это
- более эффективным!--28--> использовать список понимание, чем
filterЕсли вы определяетеlambdaкаждый раз- может быть более читабельным (и с подобной эффективностью) использовать
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 ...или даже используйте его в качестве файла RCF по умолчанию. Для этого я любезно отсылаю вас к
pylint --long-help
Comments