Python typing:如何正确为接受类型T及其实例的函数添加类型注解?
问题分析与解决
你的类型注解写法本身是正确的,mypy本应对function(str, 5)这种不匹配的调用报错。没触发错误的原因大概率是以下几种情况:
- mypy版本过旧:旧版本的mypy对泛型参数的约束检查不完善,无法识别这种类型不匹配。执行
pip install --upgrade mypy升级到最新版本即可。 - mypy配置过于宽松:如果项目里有
mypy.ini、pyproject.toml这类配置文件,可能误关了必要的检查项——比如设置了ignore_errors = true,或者禁用了arg-type错误码。检查配置文件,确保启用基础类型检查。 - 执行命令有误:确认你运行的
mypy file.py确实指向了目标文件,没有路径或文件名拼写错误。
用最新版mypy运行你的代码,应该会得到如下错误提示:
file.py:11: error: Argument 2 to "function" has incompatible type "int"; expected "str" [arg-type] Found 1 error in 1 file (checked 1 source file)
另外,你代码里导入的Any没有实际用途,可以直接删掉,不影响类型检查逻辑。
内容的提问来源于stack exchange,提问作者CallMePixelMan
相关产品推荐
相关产品推荐

