【发布时间】:2021-11-24 19:48:00
【问题描述】:
我的代码看起来像这样,它运行良好的 BDW 没有任何错误
from typing import Literal
def verify(word: str) -> Literal['Hello XY']:
a = 'Hello ' + word
return a
a = verify('XY')
虽然,当我尝试使用 mypy 进行类型检查时,它会抛出错误 error: Incompatible return value type (got "str", expected "Literal['Hello XY']")
注意:要执行类型检查,只需在 pip 安装 mypy 后执行 mypy ./filename.py。
ALSO,当我这样做时,类型检查工作正常
from typing import Literal
def verify(word: str) -> Literal['Hello XY']:
a = 'Hello ' + word
return 'Hello XY' #changed here
a = verify('XY')
我错过了什么?
【问题讨论】:
-
你能澄清一下你想要做什么吗?键入函数的方式并不明智——它可以返回以
'Hello '开头的任意字符串,而不仅仅是'Hello XY'。请注意,类型注释就是这样——它们不会影响代码现在的行为是否正确(除非某些代码显式检查注释)。
标签: python type-hinting mypy typechecking python-typing