我来自Typescript背景。我正在将静态类型检查引入我正在工作的Python项目中(使用mypy)。
在Typescript中,从被注释为返回其他内容(例如字符串)的函数中返回null是有效的:
function test(flag: boolean): string {
if(flag) {
return 'success';
} else {
return null;
}
}
您可以为函数添加多个可能的返回类型的注释,例如字符串或布尔值:
function test(flag: boolean): string | boolean {
if(flag) {
return 'success';
} else {
return false;
}
}
但是,在使用mypy的Python中,如果函数被注释为返回str
,那么我将不允许从该函数返回None。
def test(flag: bool) -> str:
if flag:
return 'success'
else:
return None
# [mypy] error:Incompatible return value type (got "None", expected "str")
此外,我没有看到可以注释多个返回类型的方法,例如 str | None
。
在使用mypy时,我该如何处理类似这样的情况?我的代码库中到处都是从错误状态返回 None 的函数。
None
并不是真正的“null引用”,它是一个对象(就像任何其他对象一样),其类型是NoneType
。 - Willem Van Onsem