Colab类型提示误判疑问:解包操作后类型标注为何出现错误提示?
Colab类型提示误判疑问:解包操作后类型标注为何出现错误提示?
最近我在Colab写代码时碰到了个挺迷惑的情况:明明代码运行完全正常,但Colab的类型检查却给某行标了错误提示,想跟大家聊聊这个问题,看看是我理解有偏差,还是Colab的类型判断出了问题。
先看这段完全没问题的代码,不管是运行还是类型提示都很正常:
str1 = 'abcde' zipped: List[Tuple[int, str]] = [(intgr, ltr) for intgr, ltr in enumerate(str1)] # 这是一种巧妙的"解包"写法 (tuple3, _) = zip(*zipped) lst3a: list = list(tuple3)
到这一步都一切顺利,但接下来的这行代码,Colab在list(tuple3)下面标了红色波浪线的错误提示,可实际运行起来完全没问题:
lst3b: list[int] = list(tuple3) print(f'{type(lst3a) == type(lst3b)}; {lst3a == lst3b}') # => True; True
Colab给出的错误说明是:
Expression of type "list[int | str]" cannot be assigned to declared type "list[int]"
看起来Colab好像对解包后得到的类型判断混乱了?还是我在类型标注或者解包逻辑的理解上有什么遗漏的点吗?
备注:内容来源于stack exchange,提问作者RussAbbott
相关产品推荐
相关产品推荐

