Pull to refresh

Comments 2

Спасибо за видео и статью! К сожалению, не смог посетить доклад лично.
Задам вопрос пост-фактум.

> Есть функции, которые принимают позиционные аргументы. Если аргументов достаточно много, то при их вызове функции не очень понятно, где какой аргумент и зачем он нужен.

У меня была похожая идея для своего линтера: github.com/wemake-services/wemake-python-styleguide/issues/340
Но она разбилась о факт наличия `*args` в языке. Как вы решаете проблему того, что некоторые функции могут и должны принимать много позиционных аргументов by design?
Да, это проблема, которую я пока не придумал как нормально решить. Вариант более-менее работающий — список исключений, передающийся через конфиг. Но это уже костыль, мне не нравится.
Можно зайти с другой стороны и сделать чекер, проверяющий не вызов функций, а их объявление на наличие keyword-only arguments (PEP-3102). Ну, вот такое —
 def foo(*, bar, baz)
. Не уверен, что это сработает в стандартном ast-парсере, но в Astroid можно получить отдельно список обычных аргументов и отдельно keyword-only через FunctionDef.args.kwonlyargs
Sign up to leave a comment.