如何在mypy严格模式下仅允许无返回值函数省略返回类型注解?
解决方案
方法1:给无返回值函数显式标注返回类型-> None
这是最规范且直接的方式,mypy会识别这类无返回值函数的标注,不再抛出no-untyped-def错误;而有返回值却未标注的函数仍会被正常检测。
示例代码:
def print_func(hi: str) -> None: # mypy 不会报错 print(hi) def print_func2(hi: str): # mypy 会抛出 no-untyped-def 错误 print(hi) return hi
方法2:用单行忽略注释精准跳过指定函数
如果不想给函数加返回类型标注,可以在无返回值函数定义行末尾添加# type: ignore[no-untyped-def]注释,让mypy跳过该函数的no-untyped-def检测,同时保留对其他有返回值未标注函数的检测逻辑。
示例代码:
def print_func(hi: str): # type: ignore[no-untyped-def] print(hi) def print_func2(hi: str): # mypy 会抛出 no-untyped-def 错误 print(hi) return hi
注意事项
- 不要全局关闭
no-untyped-def检查,否则所有未标注返回类型的函数都会被忽略,不符合你只想放过无返回值函数的需求。 - 显式标注
-> None更符合PEP484类型规范,既能满足检查要求,也能提升代码可读性。
内容的提问来源于stack exchange,提问作者Jerry
相关产品推荐
相关产品推荐

