为何Pylint与Ruff不检测带文档字符串函数的无用return?如何开启检测?
如何配置Pylint与Ruff检测仅含文档字符串和无用return的函数?
问题背景
根据Pylint官方文档,它会检测函数/方法末尾的单个return或return None语句(Python会隐式返回None,这类语句完全可以安全移除);Ruff的PLR1711规则则专门检测函数末尾无其他return语句时的不必要return或return None。
按规则要求,下面这段代码应该被检测出问题:
def f(): """docs""" return None
但在Google Colab环境测试时,Pylint(3.3.1)和Ruff(0.7.4)都没报错;可一旦函数里加了print()语句再搭配return None,两个工具又能正常识别出无用return。以下是针对两个工具的配置方法:
Pylint配置方案
Pylint默认不会对仅含文档字符串和return None的函数触发useless-return(W0150)警告,需要调整配置开启这个场景的检测:
- 方法一:在Colab中创建或修改
.pylintrc配置文件,添加如下内容:
[MESSAGES CONTROL] enable=useless-return [BASIC] check-docstring-first=no
- 方法二:直接通过命令行参数指定配置运行Pylint:
pylint --enable=useless-return --check-docstring-first=no your_script.py
说明:check-docstring-first=no会让Pylint不把文档字符串当成函数内的有效执行语句,这样就能识别出末尾的return None是多余的。
Ruff配置方案
Ruff的PLR1711规则默认忽略仅含文档字符串的函数场景,需要修改配置文件调整规则行为:
- 方法一:在Colab中创建
ruff.toml配置文件,写入以下内容:
[lint] rules = ["PLR1711"] [lint.rules.PLR1711] ignore-empty-docstring-functions = false
- 方法二:运行Ruff时指定配置文件:
ruff check --config ruff.toml your_script.py
说明:ignore-empty-docstring-functions默认值是true,设为false后,Ruff就会对仅含文档字符串和return None的函数触发PLR1711警告。
内容的提问来源于stack exchange,提问作者Visit mjrecent on Telegram
相关产品推荐
相关产品推荐

