我注意到 Python 3.5 和 Python 3.6 添加了很多关于静态类型检查的功能,所以我尝试了以下代码(在 python 3.6 中,稳定版)。
from typing import List
a: List[str] = []
a.append('a')
a.append(1)
print(a)
令我惊讶的是,Python 并没有给我一个错误或警告,尽管它1
被附加到list
应该只包含字符串的 a 中。Pycharm
检测到类型错误并给了我一个警告,但它并不明显并且没有显示在输出控制台中,我担心有时我可能会错过它。我想要以下效果:
- 如果很明显我使用了错误的类型,如上所示,抛出警告或错误。
- 如果编译器无法可靠地检查我使用的类型是对还是错,请忽略它。
那可能吗?也许mypy
可以做到,但我更喜欢使用 Python-3.6 风格的类型检查(like a: List[str]
)而# type List[str]
不是mypy
. 而且我很好奇本机python 3.6中是否有一个开关来实现我上面所说的两点。