看起来Mypy没有做任何事情来推断签名。那是对的吗?例如:
# types.py
def same_int(x: int) -> int:
return x
def f(x):
y = same_int(x)
# This would be "Unsupported operand types for + ("int" and "str")"
# y + "hi"
return y
f("hi")
f(1) + "hi"
当我这样做时没有抱怨:
mypy --check-untyped-defs types.py
Mypy会对f
(如果--check-untyped-defs
开启时)的正文中的表达进行推断。我想知道用它来制作和应用关于签名的推论是否有意义。 (如果没有,为什么不呢。)
答案 0 :(得分:4)
这是一个刻意的设计决策 - mypy旨在让您将动态代码和类型代码混合在一起,主要是为了更容易地转换大型和多样化的代码库+允许您有选择地获得两者的好处。
因此,默认情况下,没有类型注释的函数被视为动态类型函数,并且隐式赋予Any
的参数和返回类型。