python - 当函数只能返回 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
。我错过了什么吗?
解决方案
类型检查器mypy
似乎无法解析or
条件。您必须明确检查None
值:
if param:
return param
else:
return os.getenv("PARAM", _DEFAULT)
编辑:上面的代码在技术上检查虚假值,而不是None
但它在功能上等同于您的示例。
推荐阅读
- java - 适配器在对 SQLite 数据库中的项目进行排序后使所有项目未排序?
- java - 是否可以知道注释方法是否被覆盖(布尔值)?
- office365 - 使用 Office.js 约会集成捕获 22 种情况
- spring-boot - 如何在 spring boot 2 中设置 max-swallow-size?
- angular - 具有身份验证和缓存的 http 拦截器
- snakemake - Snakefile 的位置重要吗?
- arguments - 收到警告和错误:意外的关键字参数“queryset”
- wordpress - 带有和不带有 Woocommerce 的 Wordpress 网站的支付网关插件
- javascript - 使用 JavaScript 访问缓存响应标头
- java - 需要在简单票务系统中添加用户确认和累计