6

使用 python 3.5.1。和当前使用 git 安装的 mypy,mypy 标记错误 1 ​​和 2,但它不报告 3

我做错了什么,或者这是一个错误,还是这是一个已知问题?

import typing

def test_ordered_dict(od: typing.Dict[str,int]) -> typing.Dict[str,int]:
    return 1   #type error 1

a = test_ordered_dict(1)   #type error 2

def test_me():
    a = test_ordered_dict(1)  # type error 3 is not reported
4

1 回答 1

7

我对文档的理解是 mypy 只会检查一个东西(模块、函数等),如果它指示它应该检查它(通过在模块级别导入类型或通过注释一个函数)。

所以检查 1 是因为它在一个类型化的函数中,检查 2 是因为导入类型表明你的模块是类型化的并且它在模块范围内,但是 3 在一个非类型化函数的范围内,所以它被忽略了。

于 2016-01-17T17:57:54.650 回答