禁止Python可变参数
有没有什么工具可以检查代码,防止在函数中使用可变参数(也就是 *args 和 **kwargs),而不需要自己写插件呢?
1 个回答
1
不,虽然没有证据并不代表没有事实。我之前做过一次比较全面的搜索,但没有找到相关的信息。ruffs linter 从大多数主要的代码检查工具(比如 pflakes、flake8、black、isort)中引入了规则,但它并没有针对这个问题的规则。
我知道这种情况有多让人头疼……我见过一些出于好意但没有受过训练的程序员写的代码,他们在每个函数的定义中都使用了 **kwargs
,这样就不用去修改函数的参数定义,但结果是代码变得难以理解和检查。
不幸的是,确实有很多合理且不可避免的使用场景,所以代码检查工具并没有对这个问题给出一个绝对的“不能用”。
在我们的情况下,我们通过先进行一系列的教育和培训,然后使用 mypy 加上 -no-untyped-defs 来强制要求函数定义必须有类型。这种对 **kwargs 和 *args 的类型检查难度,足以成为推动我们改变的“动力”。