我正在努力使mypy能够对我的项目进行全面的工作。
from typing import TypedDict
OurDict = TypedDict('OurDict', {'x': int})
bad: OurDict = {'y': 2} # mypy successfully marks wrong
good: OurDict = {'x': 2} # mypy likes this
def get_bad() -> OurDict:
return 234 # mypy successfully marks wrong
def get_good() -> OurDict:
res = {'x': 2}
return res # mypy successfully marks correct
def get_should_be_bad() -> OurDict:
return {'hello': 2, 'world': 1} # mypy fails to see a problem
似乎mypy可以在声明为内联时检测到字典是否符合类型定义,但是在检查函数返回值时,它仅检查返回值是某种字典,而不是所需的类型。这仅仅是设计的限制,还是我做错了什么?
答案 0 :(得分:0)
事实证明,mypy检测到此没有问题,但我错误地认为从venv内部键入调用mypy会在venv内部使用mypy。我必须键入python3 -m mypy才能运行正确的可执行文件。