mypy对隐式返回None的函数报错,如何配置使其停止误报?
解决mypy对隐式返回None的报错问题
问题场景
我编写了以下返回int | None的函数,利用Python隐式返回None的特性实现"成功返回结果,失败返回None"的逻辑:
def f(condition: bool) -> int | None: if condition: return 1 def g(condition: bool) -> int | None: if condition: return return 1
这是合法的Python代码,但mypy报出了错误:
1: error: Missing return statement [return] 7: error: Return value expected [return-value]
我需要在尽量不修改代码的前提下,让mypy停止对这类代码的报错,但仍要对返回类型为非可选类型(比如纯int)的类似代码报错,例如:
def f(condition: bool) -> int: if condition: return 1 def g(condition: bool) -> int: if condition: return return 1
解决方案
通过修改mypy的配置文件即可实现需求:
配置方式
若使用
mypy.ini配置文件,添加以下内容:[mypy] allow_implicit_return = True若使用
pyproject.toml配置文件,添加:[tool.mypy] allow_implicit_return = true
配置效果
这个选项会让mypy允许以下两种情况:
- 返回类型包含
None的函数,没有显式的return语句(隐式返回None) - 返回类型包含
None的函数,使用空的return语句返回None
同时,对于返回类型不包含None的函数,mypy依然会正常报错,完全符合要求。
内容的提问来源于stack exchange,提问作者Gaussian97
相关产品推荐
相关产品推荐

