据我所知,Python是一种渐进式打字语言.所有未注释的变量都是Any
类型,它是任何类型的超类型和子类型.那么为什么静态类型判断器会拒绝下面的代码呢?
def doubles(x: str) -> str:
return x + x
y = True
doubles(y)
我知道这个程序显然是不正确的,但类型判断器是如何猜到的?难道不应该发生以下情况:
-
y
未加批注,因此它的类型为Any - 选角
Any
%到str
% - 接受方案
仅当您显式指定Any
类型时,才会出现预期行为.我假设如果不显式指定Any
,y
将被分配正确表达式的类型,即bool
,但随后我们将不能将y
的值更改为123
类型int
,这不是真的