`reveal_type`输出中的星号是什么意思?

埃里克:
reveal_type(1) # Revealed type is 'builtins.int'
bla = [1,2,3]
reveal_type(bla[0]) # Revealed type is 'builtins.int*'
reveal_type(bla[0] * 2) # Revealed type is 'builtins.int'

int之间有什么区别int*

Michael0x2a:

这意味着mypy推断出特定类型是执行类型变量替换的一部分。

例如,blah[0]实际上在做blah.__getitem__(0):事实证明,该__getitem__方法已定义为返回type的某个值_T,其中_Tlist *中包含的任何类型。

Mypy理解其中blah包含ints,因此推断出_T返回类型为type int

相反,just 1没有进行类型变量推断blah[0] * 2前者是文字。后者正在调用该int.__mul__(...)方法,该方法的类型专门返回一个int值。

*嗯,这实际上不是确切的签名,但足够接近。


在大多数情况下,您可以忽略它,而只是将其视为mypy的实现细节。之所以存在它,主要是因为在修改或调试mypy内部时,偶尔可以知道是否推断出一种类型。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章