首页 > 解决方案 > 当函数只能返回 str 时,mypy 抱怨返回值类型不兼容(得到“可选 [str]”,预期为“str”)

问题描述

import os
from typing import Optional

_DEFAULT = 'abc'

def _get_value(param: Optional[str]) -> str:
    return param or os.getenv("PARAM", _DEFAULT)

对于这个功能,mypy 会抱怨

Incompatible return value type (got "Optional[str]", expected "str")

但我认为这个函数永远不会返回None。我错过了什么吗?

标签: pythonmypy

解决方案


类型检查器mypy似乎无法解析or条件。您必须明确检查None值:

if param:
    return param
else:
    return os.getenv("PARAM", _DEFAULT)

编辑:上面的代码在技术上检查虚假值,而不是None但它在功能上等同于您的示例。


推荐阅读