以下缩小的示例最初是在对我的作品的代码库进行更改时发现的。我有行x: List[str] = []
,所以我希望mypy会强制执行,但在本例中似乎没有。如果我想让mypy抓住这个机会,我应该做什么不同的事情
from typing import List
x: List[str] = []
y = ["world"]
z = ["hello"]
def go(boop):
return f"{boop}!", y
x = list(map(go, z))
print(x)
# output:
# [('hello!', ['world'])]
$ mypy mypy_lists.py
Success: no issues found in 1 source file
$ python3 mypy_lists.py
[('hello!', ['world'])]
编辑:
在上下文中,go
定义的, y
部分是一个复制粘贴错误,我希望通过x: List[str]
注释来防止这种错误,但可能我必须更新mypy类型检查的内部模型,并且只需少信任它
编辑2:
给出了公认的答案,我可以通过类型提示信任mypy的数量似乎与mypy的配置方式直接相关。这并不奇怪,但要记住一件好事
似乎向
go
函数添加类型注释会使mypy正确地发现问题:默认情况下
mypy
忽略untyped function definitions这有助于逐步将类型注释引入现有的代码库,而不必一次添加所有类型注释
就我个人而言,对于新项目,我使用^{} 选项运行
mypy
,以避免意外地使函数未注释和绕过类型检查相关问题 更多 >
编程相关推荐